Java 17升级后,JVM堆内存开始增加,当我们检查内存指标时,Eden Space和Old Generation的大小波动和峰值都在增加。Old Gen的低值似乎没有增加,但问题是它增加得如此之快,峰值也在增加。当我检查内存转储时,似乎没有潜在的泄漏。我们可以说这里有内存泄漏吗?
的数据编辑:我们已经从Java 11升级到17。我没有看到GC指标中有任何异常活动。
升级前:堆使用率低得多:
我在GC metricis:中没有看到这样的活动
yftpprvb1#
确定增加的Heap Memory Vs Memory Leak情况
Heap Memory Vs Memory Leak
Java 17
garbage collector (GC) from Parallel GC to G1 GC
G1 GC
要验证使用不同的GCs运行应用程序并比较结果,请使用XX:+UseParallelGC选项切换回Parallel GC,或尝试其他GC,如ZGC or Shenandoah GC使用-Xlog:gc选项启用GC logging并更详细地分析GC行为。
GCs
XX:+UseParallelGC
Parallel GC
ZGC or Shenandoah GC
-Xlog:gc
GC logging
memory leak
Eclipse Memory Analyzer
1条答案
按热度按时间yftpprvb1#
确定增加的
Heap Memory Vs Memory Leak
情况Java 17
更改了默认的garbage collector (GC) from Parallel GC to G1 GC
。-G1 GC
将堆划分为更小的区域,并根据应用程序的行为调整区域的大小和数量,并以不同的方式处理年轻代和旧代,这可能会影响堆的使用模式要验证使用不同的
GCs
运行应用程序并比较结果,请使用XX:+UseParallelGC
选项切换回Parallel GC
,或尝试其他GC,如ZGC or Shenandoah GC
使用
-Xlog:gc
选项启用GC logging
并更详细地分析GC行为。memory leak
,即应用程序不再需要某个对象,但它仍然被其他对象引用,并且无法被GC回收。要检测此情况,请使用Eclipse Memory Analyzer
等工具来分析内存转储