Java GC在99%的堆内存后运行

Java GC在99%的堆内存后运行,java,ibm-was,Java,Ibm Was,每当堆内存达到90%时,我们就会收到来自WebSphereApplicationServer7.0.25的警报,但此时垃圾收集没有运行。我们监视内存,发现GC仅在堆内存使用率达到99%后才运行。JVM参数设置为: 初始堆内存-128MB 最大堆内存-512MB 请建议是否存在这样的情况,即GC在达到堆内存利用率的90%或低于该值后启动。从中我找到了此选项-XX:InitiatingHeapOccupencyPercent=n描述: 启动并发GC循环的(整个)堆占用率百分比。GCs使用它,它根据整

每当堆内存达到90%时,我们就会收到来自WebSphereApplicationServer7.0.25的警报,但此时垃圾收集没有运行。我们监视内存,发现GC仅在堆内存使用率达到99%后才运行。JVM参数设置为:

初始堆内存-128MB

最大堆内存-512MB

请建议是否存在这样的情况,即GC在达到堆内存利用率的90%或低于该值后启动。

从中我找到了此选项
-XX:InitiatingHeapOccupencyPercent=n
描述:

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


试一试。

我想指出IBM JVM不同于Oracle JVM,特定于WebSphere,它有不同的Web应用程序配置。是的,我同意你的观点,IBM JVM不同于Oracle JVM,使用Oracle JVM,我们监控GC周期的频率更高。您所说的WebSphere对Web应用程序有不同的配置。您可以更改Java进程,使其拥有更高的最大堆内存,还可以打开verbose垃圾收集-X verbosegc,并获得一个输出,该输出将准确地告诉您发生了什么。我们已经打开了verbose垃圾收集-X verbosegc。最多我们有512MB堆内存。我的问题是为什么GC在达到99%后运行?或者是否有任何方法或参数可以在WAS中设置,以便GC在达到90%之前运行。我是说有争论吗?