A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 费破的可 于 2013-10-25 18:04 编辑

class Demo extends Object
{
        public static void finalize()
        {
                System.out.println("demo ok");
        }
}


class  ThreadDemo
{
        public static void main(String[] args)
        {

                new Demo();
                new Demo();
                new Demo();
               
                System.gc();//(这句话的具体意思以及怎么使用和实现调用的???)
                System.out.println("Hello World!");
        }
}

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
而java虚拟机在默认情况下只有到内存接近饱和是才会调用垃圾回收器,这时候就可以使用System.gc()呼叫java虚拟机的垃圾回收器运行 回收内存的垃圾。但是要记得一点,System.gc()并不会马上进行垃圾回收,甚至不一定会执行垃圾回收。内存回收是有条件的,不是你想回收就回收,即使是你通知,也要等条件满足了。另外,回收线程和主线程是不分先后的。并且,你输出一句话,并不代表线程就一定结束,只是说明这句话被执行了。
另外Java提供了一个名为finalize()的方法,它的工作原理应该是这样的:一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用finalize(),而且只有在下一次垃圾收集过程中,才会真正回收对象的内存。这时候你就可以看到System.gc()的清理效果了。

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
System.gc();就是呼叫java虚拟机的垃圾回收器运行 回收内存的垃圾
而java虚拟机在默认情况下只有到内存接近饱和是才会调用垃圾回收器 所以一般是等不到java自动运行垃圾回收器的

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
楼主你好,如果问题已解决请将帖子状态修改为提问结束,

如果未解决请继续提问,谢谢合作

修改方法请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马