循环中的变量在每次循环后都会被回收吗
比如
for (int i=0;i<1000000;i++){
Date date=new Date();
}
这个date没有被引用,这样会被垃圾回收吗? 如果创建对象被引用,结果又是怎样的了?
循环中的变量在每次循环后都会被回收吗
比如
for (int i=0;i<1000000;i++){
Date date=new Date();
}
这个date没有被引用,这样会被垃圾回收吗? 如果创建对象被引用,结果又是怎样的了?
new一个对象,那么就是存放在堆中,而且刚创建的对象存放在eden区中,只有当eden区满了,才会触发Monitor GC进行回收。
你可以在运行参数中添加-XX:+PrintGCDetails
观察GC回收的情况。
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
java的GC有YGC和FGC。
你这里没有被引用的date对象一定会被回收,但不是在每次循环结束后。
GC的时机和你的代码执行没有必然联系。
相关知识,你可以baidu下java GC