- G1, Java 7'de varsayılan toplayıcı mıdır ve değilse G1'i nasıl etkinleştiririm?
G1, Java 7'de varsayılan toplayıcı değildir. -XX:+UseG1GC
G1GC'yi etkinleştirir
- Java7'de g1 hangi isteğe bağlı ayarlar içerir?
Çok var. Tam bilgi için bu oracle makalesine bir göz atın .
G1 GC, değişiklik yapmadan verimli bir şekilde çalışmasını sağlayan varsayılanlara sahip uyarlanabilir bir çöp toplayıcıdır.
Bu nedenle, kritik parametreleri özelleştirin
-XX:MaxGCPauseMillis
-XX:G1HeapRegionSize
-XX:ParallelGCThreads
-XX:ConcGCThreads
ve diğer tüm parametreleri varsayılan değere bırakın .
Burada önemli seçeneklerin bir listesi ve varsayılan değerleri bulunmaktadır. Bu liste en son Java HotSpot VM, build 24 için geçerlidir. G1 GC ayarlarını JVM komut satırında uyarlayabilir ve ayarlayabilirsiniz.
Önemli Varsayılanlar:
-XX:G1HeapRegionSize=n
Bir G1 bölgesinin boyutunu ayarlar. Değer ikinin gücü olacaktır ve 1MB ile 32MB arasında değişebilir. Hedef, minimum Java yığın boyutuna dayalı olarak yaklaşık 2048 bölgeye sahip olmaktır.
-XX:MaxGCPauseMillis=200
İstenen maksimum duraklama süresi için bir hedef değer ayarlar. Varsayılan değer 200 milisaniyedir. Belirtilen değer, yığın boyutunuza uymuyor.
-XX:G1NewSizePercent=5
Genç nesil boyutu için minimum olarak kullanılacak yığın yüzdesini ayarlar. Varsayılan değer, Java yığınınızın yüzde 5'idir.
-XX:G1MaxNewSizePercent=60
Genç nesil boyutu için maksimum olarak kullanılacak yığın boyutunun yüzdesini ayarlar. Varsayılan değer, Java yığınınızın yüzde 60'ıdır.
-XX:ParallelGCThreads=n
STW çalışan iş parçacığının değerini ayarlar. N'nin değerini mantıksal işlemci sayısına ayarlar. N'nin değeri, 8 değerine kadar mantıksal işlemci sayısıyla aynıdır.
Sekizden fazla mantıksal işlemci varsa, n değerini mantıksal işlemcilerin yaklaşık 5 / 8'ine ayarlar. Bu, n'nin değerinin mantıksal işlemcilerin yaklaşık 5 / 16'sı olabileceği daha büyük SPARC sistemleri dışında çoğu durumda işe yarar.
-XX:ConcGCThreads=n
Paralel işaretleme ipliklerinin sayısını ayarlar. Paralel atık toplama iş parçacığı (ParallelGCThreads) sayısının yaklaşık 1 / 4'üne n ayarlar.
-XX:InitiatingHeapOccupancyPercent=45
Bir işaretleme döngüsünü tetikleyen Java yığın doluluk eşiğini ayarlar. Varsayılan doluluk, tüm Java yığınının yüzde 45'idir.
-XX:G1MixedGCLiveThresholdPercent=65
Karışık bir çöp toplama döngüsüne dahil edilecek eski bir bölge için doluluk eşiğini ayarlar. Varsayılan doluluk yüzde 65'tir
-XX:G1HeapWastePercent=10
Harcamak istediğiniz yığın yüzdesini ayarlar. Java HotSpot VM, geri alınabilir yüzdesi yığın atık yüzdesinden daha az olduğunda karışık çöp toplama döngüsünü başlatmaz
-XX:G1MixedGCCountTarget=8
En fazla G1MixedGCLIveThresholdPercent canlı veriye sahip eski bölgeleri toplamak için bir işaretleme döngüsünden sonra hedef karışık çöp toplama sayısını ayarlar. Varsayılan, 8 karışık çöp koleksiyonudur
-XX:G1OldCSetRegionThresholdPercent=10
Karışık çöp toplama döngüsü sırasında toplanacak eski bölgelerin sayısı için bir üst sınır belirler. Varsayılan, Java yığınının yüzde 10'udur
-XX:G1ReservePercent=10
Alana taşma riskini azaltmak için boşta tutulacak yedek bellek yüzdesini ayarlar. Varsayılan yüzde 10'dur. Yüzdeyi artırdığınızda veya azalttığınızda, toplam Java yığınını aynı miktarda ayarladığınızdan emin olun.
Yukarıdaki dokümantasyon sayfasını izlerseniz gerekli olmayan birçok G1GC parametresini yeniden yapılandırdınız. Lütfen, özellikle CPU çekirdeklerinize dayalı olan ParallelGCThreads ve ConcGCThreads üzerine yukarıdaki önerileri kontrol edin . Gereksiz parametrelerin yeniden yapılandırmasını kaldırın.
Öneriler oracle:
G1 GC'yi değerlendirip ince ayar yaparken aşağıdaki önerileri aklınızda bulundurun:
Genç Nesil Boyutu : Bu -Xmn
seçenekle veya herhangi bir veya başka bir ilgili seçenekle , genç nesil boyutunu açıkça belirlemekten kaçının -XX:NewRatio
. Genç neslin boyutunu sabitlemek, hedef duraklama süresi hedefini geçersiz kılar .
Zaman Hedeflerini Duraklatma: Herhangi bir çöp toplamayı değerlendirdiğinizde veya ayarladığınızda, her zaman bir gecikme ile aktarım hızı arasında bir değişim vardır. G1 GC, tek tip duraklamalara sahip artımlı bir çöp toplayıcıdır, ancak uygulama iş parçacıklarında daha fazla ek yüke sahiptir. G1 GC için aktarım hızı hedefi, yüzde 90 uygulama süresi ve yüzde 10 çöp toplama süresidir .
- Java 7'deki cms veya paralel toplayıcı gibi diğer toplayıcılarda herhangi bir değişiklik yapıldı mı?
Java 7'de bazı değişiklikler var. Bu makaleye bir göz atın
- Java 7'de çöp toplamayla ilgili iyi belgeleri nerede bulabilirim?
Gc ve ilgili SE sorusu hakkında oracle belgeleri sayfasına bakın :
Üretimde Java G1 çöp toplama