簡體   English   中英

G1GC 導致 memory 逐漸增長,完全 GC 使其下降

[英]G1GC causes gradual memory growth and full GC brings it down

我正在使用 G1GC 在 centos 6 上運行我的 java 應用程序,openjdk 版本為“1.8.0_232”。 我看到總堆使用量逐漸增長並導致應用程序崩潰。 當我對活動對象進行堆轉儲時,轉儲大小僅為 1.6GB,但我使用的總堆為 32GB。

用於進行轉儲的命令:jmap -dump:live,format=b,file=/tmp/dump.hprof

在某處讀到,jmap dump 命令會觸發完整的 GC 並釋放不可訪問的堆,這就是轉儲大小減少的原因。 我可以看到在觸發轉儲命令后,我的總堆使用量下降了,並且它又開始逐漸增長。

我的 JVM 參數:-XX:-AllowUserSignalHandlers -Xmx49000m -DFCGI_PORT=6654 -XX:+UseG1GC -XX:+UseStringDeduplication -XX:InitiatingHeapOccupancyPercent=55 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath= +PerfDisableSharedMem -Djava.io.tmpdir=/var/XXX/temp

有沒有更好的方法來有效地使用 G1 進行完整的 GC?

這是因為呈現給您的是提交的 memory,這與使用的 memory 不同。

在更新的 Java 版本中,已提交的 memory 的 GC 算法得到了改進,將更頻繁地為操作系統發布。

使用 Java Mission Control 更詳細地查看您的 memory(提交 memory 與已用內存)。

我的建議是使用較新版本的 Java,如果不可能,請將 XmX 的值更改為較低的值(3Gb)。 您會注意到 JVM 將始終接近定義的限制。

  1. https://openjdk.java.net/jeps/346
  2. https://openjdk.java.net/jeps/351
  3. https://blog.idrsolutions.com/2019/09/improved-garbage-collection-in-java-13/
  4. https://www.slideshare.net/jelastic/choosing-right-garbage-collector-to-increase-efficiency-of-java-memory-usage

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM