【问题标题】:GC runs after 99% of heap memory [duplicate]GC 在 99% 的堆内存后运行 [重复]
【发布时间】:2014-07-05 04:06:24
【问题描述】:

每当堆内存达到 90% 时,我们都会收到来自 Websphere Application Server 7.0.25 的警报,但此时垃圾收集没有运行。我们监控内存,发现只有在堆内存使用率达到 99% 后才会运行 GC。 JVM参数设置为:

初始堆内存 - 128MB

最大堆内存 - 512MB

请建议无论如何,GC 在达到 90% 或低于堆内存利用率后开始。

【问题讨论】:

  • 我要指出 IBM JVM 与 Oracle JVM 不同,并且特定于 WebSphere 对 WebApplications 有不同的配置。
  • 是的,我同意您的观点,即 IBM JVM 与 Oracle JVM 不同,并且使用 Oracle JVM,我们更频繁地监控 GC 周期。您所说的 WebSphere 对 WebApplications 有不同的配置。我能知道你在说什么配置吗?
  • 您可以更改您的 Java 进程以拥有更高的最大堆内存,您还可以打开详细垃圾收集 -X verbosegc 并获得一个输出,该输出将告诉您到底发生了什么跨度>
  • 我们已经开启了verbose Garbage Collection -X verbosegc。最大我们有 512 MB 堆内存。我的问题是为什么 GC 在达到 99% 后运行?或者我们可以在 WAS 中设置任何方式或参数,以便 GC 在达到 90% 之前运行。我的意思是任何 JVM 参数?

标签: java ibm-was


【解决方案1】:

http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html我找到了这个选项-XX:InitiatingHeapOccupancyPercent=n的描述:

启动并发 GC 周期的(整个)堆占用百分比。它被 GC 使用,这些 GC 根据整个堆的占用情况触发并发 GC 周期,而不仅仅是一代(例如 G1)。值 0 表示“执行恒定的 GC 循环”。默认值为 45。

试一试。

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 1970-01-01
    相关资源
    最近更新 更多