2012-04-04 80 views
1

我以Java爲基準測試了一個服務器進程,看起來Hotspot並沒有製作很多GC,但是當它出現時,它的性能大幅提升。強制熱點頻繁GC?

我可以強制熱點進行頻繁的小選區,而不是少數大規模的長期的GC?

回答

0

你可以告訴JVM通過做垃圾回收編程:System.gc()。請注意,Javadoc說這只是一個建議。在進入關鍵部分之前,您可以嘗試調用此部分,您不希望GC性能受損。

+0

關於這一點的事情是,它實際上是一個建議。你說:「嘿,垃圾收集器,你能給我一個清理嗎?」它完全被允許迴應「Lolnope!」 – Lucas 2012-04-04 14:16:32

1

與調用GC時的干涉通常是一個壞主意。 如果你對gc的性能有問題,一個更好的方法是調整伊甸園,倖存者和舊空間的大小。

如果完全掃必須完成它並沒有真正的問題是如何經常被稱爲,速度永遠是相對緩慢的,唯一的快速GC電話是那些在伊甸園和生存空間。

因此增加伊甸園和生存空間可能會解決你的問題,但不幸的是良好的內存分析是相當費時和複雜的執行。

http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html (鏈接被盜其他答案)也給出瞭如何配置的選項,如果有必要。 -XX:NewRatio = 2或-XX:NewRatio = 3可能會增加速度,但也可能會減慢速度。不幸的是,這是非常依賴於應用

0

可以提高頻率的GC是通過降低年輕/新的大小進行以上經常打電話GC。這並不意味着你會暫停更少的時間,只是經常會發生。

減少GC的影響,最好的辦法是到內存配置您的應用程序,並降低你的生產垃圾量。這不僅會使您的代碼更快,而且會減少每次GC發生的頻率和時間。

在更極端的情況下,可以減少GC發生的頻率少於每天一次,刪除它作爲一個問題都在一起。