, GC

2016-02-22 3 views
5

'dan sonra referans değişimi yapar. GC hakkında biraz kafa karışıklığım var, GC gerçekleştirdiğinde tüm konuları durdurur ve Çöp referanslarını toplar., GC

GC'den sonra jvm herhangi bir sıkıştırma yapıyor mu?

Sıkıştırma: sona referanslar

neden delikleri ortadan kaldırmak için "kullanım-içi" bellek alanları hareket ettirme aracı Evet sonra JVM eski referanslar korumak ya da geri kalan tüm nesnelere yeni bir referans atar eğer?

+1

JVM'den bahsettiğinizden beri Java'yı dil olarak ekledim. Ancak, başka bir şeye atıfta bulunuyorsanız lütfen etiketleyin (ör. Scala). Öneriniz için – Bathsheba

+0

teşekkürler –

cevap

7

Sıkıştırma hakkında: kullanılan algoritmaya bağlıdır. Tüm genç jenerasyon GC'ler kollektörleri kopyaladıkları için: evet, kamp hareketleri yapıyorlar, hayatta kalan tüm nesneleri bile farklı bir hafıza alanına taşıyorlar. Eski nesil koleksiyoncular ile hangi toplama algoritmasının kullanıldığına bağlıdır. Standart marka süpürme-kompakt-toplayıcı sıkıştırıyorken (iyi, bu yüzden "kompakt" işte bu yüzden) CMS-toplayıcı (eşzamanlı işaret süpürme), kaçınılmaz olduğu ve dolayısıyla yığınları yönetmek zorunda olmadığı sürece herhangi bir sıkıştırma yapmaz. parçalanma.

Nesneler taşınırken (bir kopya toplayıcı kullanarak veya sıkıştırma nedeniyle) mevcut referanslar yeni bellek konumuna işaret edecek şekilde güncelleştirilir.