社区
Java SE
帖子详情
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
...全文
296
12
打赏
收藏
Java初学者CSDN第5问!
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
复制链接
扫一扫
分享
转发到动态
举报
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……
CSDN
社区
Java
杂志3
Csdn
社区电子杂志2005年5月 第2期 总第3期
C#开发实战1200例.z02
【说明】 ===这个是第二卷,还有两卷!!=== 第一卷:C#开发实战1200例.z01 地址:http://download.
csdn
.net/detail/cleopard/5636223 这是第二卷 第三卷:马上传 由于上传限制,压缩包分成3卷 解压时需要分别把三个部分下载下来 不要更改文件名,放到同一个文件夹内 这样才能正确解压!! CLeopard 2013/06/23 16:20 http://download.
csdn
.net/detail/cleopard/5279918 PHP编程一百例 http://download.
csdn
.net/detail/cleopard/5270332 Winform窗体动画载入和退出 http://download.
csdn
.net/detail/cleopard/5263838 水果忍者HTML5+JS网页版 源码 http://download.
csdn
.net/detail/cleopard/5260184 220余个
JAVA
初学者
实例源码[经典源码] http://download.
csdn
.net/detail/cleopard/5525397 更多免费资源 http://download.
csdn
.net/user/cleopard
C#开发实战1200例.zip
【说明】 ===这个是第三卷,还有两卷!!=== 第一卷:C#开发实战1200例.z01 地址:http://download.
csdn
.net/detail/cleopard/5636223 第二卷:C#开发实战1200例.z02 地址:http://download.
csdn
.net/detail/cleopard/5638549 由于上传限制,压缩包分成3卷 解压时需要分别把三个部分下载下来 不要更改文件名,放到同一个文件夹内 这样才能正确解压!! CLeopard 2013/06/23 16:20 http://download.
csdn
.net/detail/cleopard/5279918 PHP编程一百例 http://download.
csdn
.net/detail/cleopard/5270332 Winform窗体动画载入和退出 http://download.
csdn
.net/detail/cleopard/5263838 水果忍者HTML5+JS网页版 源码 http://download.
csdn
.net/detail/cleopard/5260184 220余个
JAVA
初学者
实例源码[经典源码] http://download.
csdn
.net/detail/cleopard/5525397 更多免费资源 http://download.
csdn
.net/user/cleopard
跟汤老师学
Java
(第6季):方法
本课程从零开始,以通俗易懂的方式讲解
Java
入门,手把手教你掌握每一个知识点。课程中使用的所有英文单词都会逐一查询并记录,真正做到零基础入门学习,最适合
初学者
的教程!课程内容包括:1.方法简介2.自定义方法3.方法返回值4.方法的调用5.练习:猜数字游戏6.递归7.程序调试Debug
Java
初学者
——小白篇(一)
本文简单介绍了
Java
环境的安装,以及
Java
数据类型的组成情况。
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章