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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李晓璐 黑马帝   /  2011-8-8 10:30  /  2565 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

JAVA 有没有不被回收的垃圾?

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

4 个回复

倒序浏览
黑马网友  发表于 2011-8-8 18:13:15
沙发

回答

1.  自动性。Java技术提供了一个系统级的线程,即垃圾收集器线程,来跟踪每一块分配出去的内存空间,当Java 虚拟机处于空闲循环时,垃圾收集器线程会自动检查每一块分配出去的内存空间,然后自动回收每一块可以回收的无用的内存块。

2.  不可预期性。一个对象成为了垃圾,但是你不能断言,该对象在这行以后就立刻被清除,甚至有可能当程序结束后,该对象仍然占用内存。像Windows这样的软件常常会出现内存不足的情况,JAVA程序很少出现就是因为可以自动回收内存。然而,因为JAVA也不能保证及时地清除无用的对象,所以JAVA程序也会出现内存不足的情况,只是这种情况很少出现。垃圾收集线程在一个Java程序中的执行是自动的,不能强制执行,即使程序员能明确地判断出有一块内存已经无用了,是应该回收的,程序员也不能强制垃圾收集器回收该内存块。程序员唯一能做的就是通过调用System.gc 方法来"建议"执行垃圾收集器,但其是否可以执行,什么时候执行却都是不可知的。

评分

参与人数 1技术分 +4 收起 理由
老罗 + 4

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-8-9 00:37:06
藤椅
我认为java里没有不被回收的垃圾,只要成了垃圾,一定会被回收的。只不过实际开发中初学者往往会忘记释放掉已经没有用的资源,比如创建了一个全局的Image对象,用完了不置为null,那么这个对象会一直存在于内存

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-8-9 01:21:12
板凳

回复 沙发 的帖子

你走运了,评分竟然提交了两次:L
回复 使用道具 举报
黑马网友  发表于 2011-8-10 06:16:43
报纸
[quote] 原帖由 [i]老罗[/i] 于 2011-08-09 01:21 发表 [url=http://bbs.itheima.com/redirect.jsp?goto=findpost&pid=7476&ptid=1104][img]http://bbs.itheima.com/images/common/back.gif[/img][/url]你走运了,评分竟然提交了两次:L [/quote]哈哈,老罗怎么这么晚才睡啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马