簡體   English   中英

重復使用可用堆的完整GC

[英]Repeated Full GC with available Heap

即使沒有充分使用堆,我也會遇到重復的Full GC。

gc日志如下所示: http : //d.pr/i/iFug (藍線是已使用的堆,灰色矩形是Full GC)。

這似乎是與該問題中發布的問題類似的問題: 頻繁的具有空堆的完整GC

但是,該線程沒有提供任何實際的問題答案。 我的應用程序確實使用RMI,並且在升級45之前生產服務器確實使用1.6,從而將GC間隔從1分鍾增加到1小時( http://docs.oracle.com/javase/7/docs/technotes/guides/rmi /relnotes.html )。 但是,從日志的其余部分來看,我看不到Full-GC-every-1-min模式。

可能是什么原因造成的?

原因很可能是您達到了當前的堆大小。 堆的大小小於您設置的最大值,並在程序運行時進行調整。

例如,假設您設置的最大大小為1 GB,則初始堆大小可能為256 MB,當達到256 MB時,它將執行完整的GC,在此GC之后,它可能會決定400 MB為更好的大小,並且達到此大小時執行完整的GC等


當保有權空間填滿或找不到可用空間時,您將獲得主要收藏。 例如,是否零散。

如果幸存者空間太小,您還將獲得全部收藏。

簡而言之,最可能的原因是您使用的gc調整參數。 我建議您簡化調整參數,直到系統以預期的方式運行。

如鏈接線程中所述,禁用顯式GC並查看FullGC模式是否再次出現: -XX:+DisableExplicitGC RMI代碼可能在給定的時間間隔內觸發了顯式GC,這在某些情況下可能不是所希望的。

如果FullGC仍然發生,我將使用線程轉儲以及可能的堆轉儲來分析問題。

另外,使用jstat查看Eden,Survivor,OldGen空間的占用情況。

暫無
暫無

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

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