|
|
1
4
一般来说,“完全垃圾收集”的定义是错误的。GC检测不可访问的对象,并回收它们。大多数GC实现都是在“循环”的基础上运行的,一旦运行了一个完整的循环,就有可能定义一个合理的“回收空间”概念。因此,如果您可以运行一个完整的循环,而该循环根本没有找到可回收的空间,并且应用程序在其他方面处于“空闲”状态(例如,不更新指针),那么您可以说您暂时达到了“完全收集”点。 因此,您可能需要这样做:
还有一些注意事项:
对于“更完整”的GC,您可以使用JVMTI接口(调试器使用的接口),它允许您运行GC,但是 也 暂停目标JVM线程,这使得定义和实现“完整GC”状态变得更加容易。 |
|
|
2
4
强制分配最大可用内存量。当JVM在
显然是出于纯粹的测试原因:) 另一个选择是使用更好的探查器。提供有关内存使用情况和符合GC条件的对象的更好报告的方法。 |
|
|
3
2
|
|
|
4
1
基本上,你能做的就是:
然而,请记住,所有能以某种方式到达的引用都被认为是活着的,即使你认为它们不是。根据具体的GC和设置,这可能收集也可能不收集(大多数)不“活动”的内存。 |
|
codeforester · 测量GC暂停时间的最佳方法是什么? 8 年前 |
|
|
Venki WAR · 需要解释G1的并行完整GC 8 年前 |
|
|
Stephan_Berlin · 为什么CMS系列中的初始标记阶段 8 年前 |
|
|
Bonsaisteak · 为什么年轻一代需要三个区域来收集垃圾? 8 年前 |
|
|
goks · 如何清除熊猫的数据帧内存? 8 年前 |