【发布时间】:2014-01-29 03:12:34
【问题描述】:
我有三个对象:
ClassA classA = new ClassA();
ClassA classB = new ClassA();
ClassA classC = new ClassA();
这些对象中的每一个都有一个名为run 的public void,它执行某些操作并以下列方式调用:
classA.run();
classB.run();
classC.run();
在每次循环迭代中,每个run 调用都会生成特定数量的垃圾。
如何准确判断每个run产生的垃圾量?
【问题讨论】:
-
您无法控制垃圾收集。 finalize()、runFinalizersOnExit() 等不能保证运行。为什么不把更精细的细节留给 JVM?
-
从某种意义上说,我确实可以控制垃圾收集——我可以看到产生的垃圾最多,然后减少产生的垃圾。这是我的目标,
-
但为什么这是你的目标?这听起来像是过早的优化。
-
@Gimby 对于一个不希望 GC 停止世界的实时系统......
-
限制垃圾数量只会延迟 GC,但它最终会发生,您无法确定何时发生。为了解决这个问题,你应该看看像 Zing 这样的实时 JVM - azulsystems.com/products/zing/virtual-machine - 它使用他们的 C4 Continuously Concurrent Compacting Collector 来完全避免 GC 暂停。
标签: java memory garbage-collection benchmarking heap-memory