![]() |
1
11
GC将自动清除不再在作用域中的任何变量。 块内声明的变量(如for循环)将仅在该块内的作用域内。一旦代码退出块,GC将删除它。循环的一次迭代结束时就会发生这种情况,因此循环的每次迭代结束后,列表就有资格进行垃圾收集。
请注意,只有在循环中使用变量时才会出现这种情况。如果将它传递给另一个保持对它的引用的方法,则不会对变量进行垃圾收集。 |
![]() |
2
6
上帝,不!Java的GC非常多, , 许多的 比那更聪明。 |
![]() |
3
3
GC会在需要的时候回收所有无法访问的实例。它不是GC变量。
变量不会得到GCed,实例会。 |
![]() |
4
3
这可能有助于理解for循环背后的语法。这在 JLS Section 14.14.1 .
语句可以是单个语句,也可以是块(用大括号括起来的语句)。一个块表示一个新的词法范围,其中声明的变量仅是该块的本地变量。很多人没有意识到的是,这并不是for循环所独有的。我可以在方法中的任何位置放置块语句:
无论如何,这不是我想要的。可以说,这与它是循环的事实关系不大,而与它是块的事实关系更大(如果选择不使用block语句,则不能声明新的局部变量,因此问题无关紧要)。 |
![]() |
5
0
你不必为垃圾烦恼。 Java GC将自动执行此操作。 但我的建议是,作为一个好的开发人员,你必须练习 为了清理垃圾。 因此,通过照顾我们自己,我们将明确地提高性能。 |
![]() |
codeforester · 测量GC暂停时间的最佳方法是什么? 6 年前 |
![]() |
Venki WAR · 需要解释G1的并行完整GC 6 年前 |
![]() |
Stephan_Berlin · 为什么CMS系列中的初始标记阶段 6 年前 |
![]() |
Bonsaisteak · 为什么年轻一代需要三个区域来收集垃圾? 6 年前 |
![]() |
goks · 如何清除熊猫的数据帧内存? 6 年前 |