2017-06-06 44 views
1

我的服務器應用程序生成許多死對象,所以我認爲伊甸園和生存空間填滿非常快,這會導致GC頻繁運行。
我的目標是有幾次/多次跑步,每天說一次,即使他們需要幾秒鐘。
針對少量和長時間GC運行的JVM調優

如何調整此目標的JVM?
我應該使用哪種GC? (直至G1)。

可用堆空間周圍的4Gb(-Xmx4G)

+1

您是在談論年輕還是老年人的收藏?同樣,發佈GC日誌並指出哪些部分在您認爲可以容忍的範圍之外。 – the8472

+0

@ the8472我正在談論頻繁的年輕一代收藏。 – LppEdd

+0

減少長時間運行「全部gc」的唯一方法不是讓內存建立起來。更頻繁地運行gc會減少堆積。它是你應該調整的「世界暫停」事件(全部gc)。如果你的應用程序正在創建大量新對象,那麼你應該使用parallelGC。 –

回答

0

在你的情況下,它引發了頻繁的輕微GC的。您應該使用"-XX:NewRatio=ratio"

NewRatio這將決定老年人與年輕人之間的比例。

例如-XX:NewRatio = 3意味着舊世代與年輕世代之間的比例爲1:3,伊甸園和生存空間的總大小將是堆的四分之一。

此外,您可以使用NewSize和MaxNewSize微調Eden和Survivor空間,這些參數控制新一代的最小和最大尺寸。

默認情況下,NewRation = 2表示舊世代與年輕世代的比例爲1:2。

您可以閱讀更多詳細信息here