1)我们的应用程序:Spring boot,Java 8
2)我们使用的参数:xms = 256 MB,xmx = 2 GB
我们已经看到java8应用程序的已用堆大小在适当时不会缩减。
在启动Spring Boot / Java 8应用程序时,我们应该与上面的#2一起使用的任何其他参数,以便GC可以做得更好?
感谢您的帮助!
答案 0 :(得分:1)
以上选项具有以下效果:
-Xms,-Xmx :在堆大小上放置边界以增加垃圾收集的可预测性。副本服务器中的堆大小有限,因此即使是Full GCs也不会触发SIP重新传输。 -Xms设置起始大小以防止堆扩展导致的暂停。
-XX:+ UseG1GC :使用垃圾优先(G1)收集器。
-XX:MaxGCPauseMillis :设置最大GC暂停时间的目标。这是一个软目标,JVM将尽最大努力实现它。
-XX:ParallelGCThreads :设置垃圾收集器并行阶段使用的线程数。默认值因运行JVM的平台而异。
-XX:ConcGCThreads :并发垃圾收集器将使用的线程数。默认值因运行JVM的平台而异。
-XX:InitiatingHeapOccupancyPercent :启动并发GC周期的(整个)堆占用百分比。基于整个堆的占用而不仅仅是其中一代(包括G1)触发并发GC循环的GC使用此选项。值为0表示进行恒定的GC循环'。默认值为45。
答案 1 :(得分:0)
Oracle JDK提供了内置的Java VisualIVM工具来分析和调整GC因素