İlk ve maksimum yığın boyutu
Atık Toplayıcı 'nın (GC) işlemlerinin anlaşılması, yığının verimli yönetimi için ilk ve en yüksek yığın boyutlarını ayarlamanıza yardımcı olur.
- %70 'ten büyük bir yığın doluluğu, daha sık GC döngülerine neden olur ve bu da performansı düşürebilir. -Xminf seçeneğini ayarlayarak bu davranışı değiştirebilirsiniz.
- %40 'tan az bir yığın doluluğu, seyrek GC döngüleri anlamına gelir. Ancak, bu döngüler gerekenden daha uzundur, bu da daha uzun duraklama sürelerine neden olur ve bu da performansı azaltabilir. -Xmaxf seçeneğini ayarlayarak bu davranışı değiştirebilirsiniz.
70 + (70 * 43/100)Yığın boyutu alt ve üst sınırının aynı değere ayarlanması genellikle iyi bir fikir değildir; çünkü atık toplama, yığın doluncaya kadar geciktirilir. Bu nedenle, GC ilk kez çalıştığında işlem daha uzun sürebilir. Ayrıca, yığın parçalanmış olma olasılığı daha yüksektir ve bir yığın sıkıştırması gerektirir. Uygulamanızı, uygulamanızın gerektirdiği minimum yığın boyutuyla başlatın. GC başladığında, yığın küçük olduğu için sık ve verimli bir şekilde çalışır.
GC yeterince çöp bulamazsa, sıkıştırma çalıştırılır. GC yeterince atık bulursa ya da yığın genişletme için diğer koşullar karşılandıysa ( OpenJ9 kullanıcı belgelerinde Yığın ayırma konusuna bakın), GC yığını genişletir.
Bu nedenle, bir uygulama genellikle yığın doluncaya kadar çalışır. Daha sonra, ardışık çöp toplama döngüleri çöpü kurtarır. Yığın canlı nesnelerle dolduğunda, GC yığını sıkıştırır. Yeterli atık yine de kurtarılamazsa, GC yığını genişletir.
Daha önceki açıklamadan, GC ' nin yığını uygulamanın gereksinimleri arttıkça sıkıştırdığını görebilirsiniz; böylece yığın genişledikçe, özgün öbeğinin alt kısmında sıkıştırılmış nesneler kümesi ile genişler. Sıkıştırma, sıkıştırmanın gerekli olduğu saptandığında olası en küçük yığın boyutunda çalıştığından, bu işlem yığını yönetmenin verimli bir yoludur. Sıkıştırma, yığın büyüdükçe minimum yığın boyutu ile gerçekleştirilir. Bir uygulamanın ilk nesne kümesinin anahtar veya kök kümesi olma eğiliminde olduğuna dair bazı kanıtlar vardır, bu nedenle onları erken sıkıştırarak daha kısa ömürlü nesneler için yığın geri kalanını serbest bırakır.
Sonuç olarak, JVM ' nin yığın boyutu üst sınırında, uzun ömürlü tüm nesneler yığının alt kısmında sıkıştırılır. Sıkıştırma, sıkıştırma en düşük maliyetli evresindeydi. Yığını genişletmek için gereken işleme ve bellek kullanımı miktarı, çok büyük bir parçalı yığını toplama ve sıkıştırma maliyetine kıyasla neredeyse önemsiz.