- class A
- {
- private static int count = 0;//定义一个静态变量记录堆内存中有效对象的个数
- public A()
- {
- count++;//每用new新建一个对象时调用构造方法,count加1
- }
- public void finalize()//Object类中的一个方法,当对象在堆内存中变成垃圾释放前调用
- {
- count--;
- }
- static int getCount()//定义一个静态方法,用于返回count
- {
- return count;
- }
- }
- public class TestA
- {
- public static void main(String[] args)
- {
- A a1 = new A();
- a1 = null;//将a1对象变成垃圾
- A a2 = new A();
- A a3 = new A();
- System.gc();//强制启动垃圾回收器,调用finalize()方法
- int count = A.getCount();
- System.out.println("现在堆内存里有 "+count+" 个有效对象");
- }
- }
复制代码
如上代码,按我的预想应该输出结果是 2 ,为什么还是 3 呢?
求指教~
|
|