黑马程序员技术交流社区

标题: 强制GC后,多长时间垃圾对象才会被清除? [打印本页]

作者: dba_hotmail    时间: 2014-8-28 16:28
标题: 强制GC后,多长时间垃圾对象才会被清除?
各位好,今天看到gc,做了个测试,代码如下:
public class test {
        static int[][] arr;
        public static void main(String[] args) {
                arr=new int[][] {{0,1,2},{2,3,4},{2,3,4}};
                System.out.println(arr);
                System.gc();
                System.out.println(arr);
        }
}

打印结果如下:
[[I@de6ced
[[I@de6ced


gc前与后的结果一样,为什么这里gc不管用还是需要一段时间才会自动清除?

作者: HKing    时间: 2014-8-28 17:26
网上看到这个:
http://blog.csdn.net/huxin1/article/details/5932911
希望对你有所帮助

作者: 刃下心    时间: 2014-8-30 09:47
刚看到毕老师的视频中有类似问题,垃圾回收机制是不定时回收的,就比如垃圾桶满了之后就会被回收掉

作者: 不想飞不到    时间: 2014-8-31 10:05
这个时间是虚拟机调配的,你不能指定
作者: justin1258    时间: 2014-9-3 13:28
最佳答案没有直接回答楼主的问题
作者: 毛毛毛玉    时间: 2014-9-14 07:09
本帖最后由 毛毛毛玉 于 2014-9-14 07:17 编辑

函数没有退出吧?
变量此时应该还是有效的。先设置为null试试?
那个函数似乎是在“建议”进行gc。
java的机制不大清楚,不过应该也是那样。进行垃圾回收的时候,先对所有内存占用进行标记,然后对当前作用域有效的引用所对应的内存去除标记,然后对这些地方引用到的内存去除标记,直到最后结束……所有没标记的内存都会被某种机制干掉……
呃,我说的不一定准确甚至正确……不过应该可以这样方便理解……大概……Orz
作者: yangdingzhi    时间: 2015-5-3 18:48
还没有学到,提前来学新知识。
作者: 1191065242    时间: 2016-5-1 19:45
时间不能确定,gc只是相当于你去呼叫保姆来清理垃圾,如果这个保姆觉得你的垃圾不算多或则保姆现在正忙着清理其他的垃圾他是不会立马过来清理你的垃圾的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2