簡體   English   中英

連續2個完整GC周期未清除內存

[英]Memory not cleared in 2 consecutive full GC cycles

我不明白這里的垃圾回收器在做什么,我只能看到3個完整的GC周期,第一個周期已清除了一些內存,其他2個周期的內存仍未清除,每個周期仍需要16秒。

1189.994: [GC1189.994: [ParNew: 446787K->22515K(471872K), 0.1136668 secs] 1408852K->990343K(4141888K), 0.1144236 secs] [Times: user=0.87 sys=0.01, real=0.11 secs] 
1204.825: [Full GC1204.826: [CMS: 967828K->695710K(3670016K), 20.8721088 secs] 1192388K->695710K(4141888K), [CMS Perm : 133862K->133237K(524288K)], 20.8732268 secs] [Times: user=20.81 sys=0.13, real=20.87 secs] 
1225.703: [Full GC1225.703: [CMS: 695710K->695710K(3670016K), 16.7364748 secs] 695716K->695710K(4141888K), [CMS Perm : 133237K->133237K(524288K)], 16.7373018 secs] [Times: user=16.77 sys=0.01, real=16.74 secs] 
1242.444: [Full GC1242.444: [CMS: 695710K->695710K(3670016K), 16.4691631 secs] 695727K->695710K(4141888K), [CMS Perm : 133237K->133237K(524288K)], 16.4698573 secs] [Times: user=16.51 sys=0.02, real=16.47 secs] 
1283.740: [GC1283.741: [ParNew: 419456K->33117K(471872K), 0.1520895 secs] 1115166K->728827K(4141888K), 0.1531085 secs] [Times: user=1.06 sys=0.01, real=0.15 secs]

每天我在gc.log和中看到此消息,並且每次2個周期都沒有用。

vm參數是

java -server -Xms4096m -Xmx4096m -XX:PermSize=512m
-XX:MaxPermSize=512m -XX:MaxNewSize=512m -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+UseMembar -d64 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:GC.log -classpath ......

可用處理器(核心):16

編輯:我想刪除MaxNewSize參數,因為它現在是總堆的1/8部分。 我讀過幾篇文章,它應該是總堆的1/3到1/4。 但是我無法正確解釋年輕一代的大小(MaxNewSize)將如何影響GC。

聽起來這些對象仍然處於活動狀態,並且仍然具有指向它們的鏈接。 您可以通過在聲明和初始化對象/變量的地方四處移動來解決此問題。 這並不總是可能的,因為它可能影響程序的運行。 請記住,垃圾回收並不總是釋放空間,而是僅釋放可以釋放的空間。

您是否有理由認為應該釋放空間? 您是手動觸發垃圾收集器還是僅僅是它的自動運行?

在GC日志中,我幾乎沒有想到

  1. 在這種情況下,超過10 GB的3個GB中的舊10個未滿695 MB。 那么,為什么GC觸發? 很少有GC循環運行,但不會從燙發或任何舊一代收集任何東西。 可能是由於手動觸發嗎? 請記住,當舊一代堆出現碎片(因此升級很困難)或InitiatingHeapOccupancyPercent設置得太低時,完整的GC就會運行。 對於某些JVM,默認值為45。 您可以將其設置為-XX:+ InitiatingHeapOccupancyPercent = 70

暫無
暫無

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

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