【问题标题】:Heap size Vs Time spent on garbage collection [JAVA]堆大小与垃圾收集所花费的时间 [JAVA]
【发布时间】:2014-04-29 17:27:05
【问题描述】:

我想知道如果将堆大小设置得更高,是否总能保证减少 GC 时间。

谢谢!

【问题讨论】:

  • 我想他只是忘了把这个当成一个问题来表达......如果堆大小设置得更高,GC时间会保证减少吗?我的回答=我不知道。
  • 我认为恰恰相反。您的 GC 运行次数可能较少,但每次运行可能需要更长的时间才能完成,因为要收集的对象数量增加,这是增加堆的直接结果。
  • 不,Java Virtual Machine specification 中没有这样的保证,所以这是否正确取决于您使用的 JVM 实现。这可能不适用于 Oracle 的 JVM,也不适用于其他 JVM 实现。

标签: java garbage-collection heap-memory


【解决方案1】:

不,它没有。

您真正关心的是老一代的延迟(Stop-The-World 事件)。以 CMS 为例,增加堆会延迟老年代的垃圾收集,但是当它发生时,它会花费很多时间,因为你的老年代很大。 CMS 这仍然需要测量,每 GB 大约需要 1 秒。

虽然很多应用程序都会做这种事情(个人经验);即增加堆。

为什么?

因为我们可以通过这种方式将老年代集合推到晚上,此时应用程序被 0.02% 的总使用量/用户使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 2013-12-30
    • 2010-12-13
    相关资源
    最近更新 更多