Java初学者CSDN第5问!

nisus_lee 2005-11-12 12:36:36
class Finalize
{
public void finalize()
{
System.out.println("finalize");
}
public static void main(String[] args)
{
new Finalize();//1
System.gc();
Finalize a=new Finalize();//2
System.gc();
}
}
这个程序为什么2中不执行finalize
...全文
297 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
pauliuyou 2005-11-16
  • 打赏
  • 举报
回复
jvm调用
hailun 2005-11-16
  • 打赏
  • 举报
回复
finalize()
这个函数谁调用啊
OnlyFor_love 2005-11-12
  • 打赏
  • 举报
回复
class test
{
public void finalize()
{
System.out.println("finalize");
}
public static void main(String[] args)
{
new test();//1
System.gc();
new test();//2
System.gc();
}
}

这样不就可以了吗?
hailun 2005-11-12
  • 打赏
  • 举报
回复
我也是新手
在1处之前并没有声明一个对象呀
怎么可以不用声明就直接实例化对象吗?
liu_you 2005-11-12
  • 打赏
  • 举报
回复
看样子1还是执行了,2是因为还有a在引用这个对象,你可以在gc前置a=null;
liu_you 2005-11-12
  • 打赏
  • 举报
回复
finalize应该protected才是重载Object的finalize方法.
liu_you 2005-11-12
  • 打赏
  • 举报
回复
class Finalize
{
public void finalize()
{
System.out.println("finalize");
}
public static void instance()
{
Finalize a=new Finalize();//3
}
public static void main(String[] args)
{
new Finalize();//1
System.gc();
Finalize a=new Finalize();//2
a=null;
System.gc();
instance();
System.gc();
}
}
执行结果为
finalize
finalize
finalize

应该能说明什么了吧?
方法体没执行完的时候JVM不能确定哪些变量是不再被引用的了!
liu_you 2005-11-12
  • 打赏
  • 举报
回复
class Finalize
{
public void finalize()
{
System.out.println("finalize");
}
public static void main(String[] args)
{
new Finalize();//1
System.gc();
Finalize a=new Finalize();//2
a=null;
System.gc();
}
}
执行结果:
finalize
finalize
龙宜坡 2005-11-12
  • 打赏
  • 举报
回复
OnlyFor_love的方法可行!
OnlyFor_love 2005-11-12
  • 打赏
  • 举报
回复
to hailun(大海):

其实new test();就是一个对象了。
相当于test aaa = new test();
那么new test() 就应该是aaa
aaa.方法 也就是new test().方法
OnlyFor_love 2005-11-12
  • 打赏
  • 举报
回复
finalize()被调用有三种情况
1.所有对象被Garbage Collection时自动调用,比如运行System.gc()的时候.
2.程序退出时为每个对象调用一次finalize方法。
3.显式的调用finalize方法

除此以外,正常情况下,当某个对象被系统收集为无用信息的时候,finalize()将被自动调用,但是jvm不保证finalize()一定被调用,也就是说,finalize()的调用是不确定的,这也就是为什么sun不提倡使用finalize()的原因.
nisus_lee 2005-11-12
  • 打赏
  • 举报
回复
还是没讲清楚实质的原因……等待ing……

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧