Aracılığıyla paylaş


ICorProfilerCallback2::SurvivingReferences Yöntemi

Sıkıştırılmayan çöp toplama işleminin sonucu olarak yığındaki nesnelerin düzenini raporlar.

Sözdizimi

HRESULT SurvivingReferences(  
    [in] ULONG  cSurvivingObjectIDRanges,  
    [in, size_is(cSurvivingObjectIDRanges)] ObjectID  
                objectIDRangeStart[] ,  
    [in, size_is(cSurvivingObjectIDRanges)] ULONG  
                cObjectIDRangeLength[] );  

Parametreler

cSurvivingObjectIDRanges
[in] Sıkıştırılmayan çöp toplama sonucunda hayatta kalan bitişik nesne bloklarının sayısı. Diğer bir ifadeyle cSurvivingObjectIDRanges değeri, her nesne bloğu için sırasıyla bir ObjectID ve uzunluğu depolayan ve cObjectIDRangeLength dizilerinin boyutudurobjectIDRangeStart.

öğesinin SurvivingReferences sonraki iki bağımsız değişkeni paralel dizilerdir. Başka bir deyişle, objectIDRangeStartcObjectIDRangeLength aynı bitişik nesne bloğunu ilgilendiriyor.

objectIDRangeStart
[in] Her biri ObjectID bellekteki bitişik, canlı nesneler bloğunun başlangıç adresi olan bir değer dizisi.

cObjectIDRangeLength
[in] Her biri bellekteki bitişik nesnelerin hayatta kalan bloğunun boyutu olan tamsayı dizisi.

Dizide objectIDRangeStart başvuruda bulunan her blok için bir boyut belirtilir.

Açıklamalar

Önemli

Bu yöntem, 64 bit platformlarda MAX_ULONG 4 GB'tan büyük nesneler için boyutları bildirir. 4 GB'tan büyük nesneler için, bunun yerine ICorProfilerCallback4::SurvivingReferences2 yöntemini kullanın.

ve cObjectIDRangeLength dizilerinin öğeleri, bir nesnenin objectIDRangeStart çöp toplamadan sağ çıkıp çıkamayacağını belirlemek için aşağıdaki gibi yorumlanmalıdır. Bir ObjectID değerin (ObjectID) aşağıdaki aralık içinde olduğunu varsayalım:

ObjectIDRangeStart[i]<= ObjectID<ObjectIDRangeStart[i] + cObjectIDRangeLength[i]

Bunun aşağıdaki aralıktaki herhangi bir değeri i için nesnesi çöp toplama işlemine devam etti:

0 <= i<cSurvivingObjectIDRanges

Sıkıştırılmayan bir çöp toplama işlemi, "ölü" nesnelerin kapladığı belleği geri alır, ancak bu boş alanı sıkıştırmaz. Sonuç olarak, bellek yığına döndürülür, ancak hiçbir "canlı" nesne taşınmaz.

Ortak dil çalışma zamanı (CLR), sıkıştırılmayan çöp toplamaları için çağrıda bulunur SurvivingReferences . Atık koleksiyonlarını sıkıştırmak için, bunun yerine ICorProfilerCallback::MovedReferences çağrılır. Tek bir çöp toplama, bir nesil için sıkıştırılabilir ve başka bir nesil için sıkıştırılmamalıdır. Belirli bir nesildeki çöp toplama için profil oluşturucu bir SurvivingReferences geri çağırma veya MovedReferences geri çağırma alır, ancak ikisini birden almaz.

Belirli bir çöp toplama sırasında, sınırlı iç arabelleğe alma, sunucu çöp toplama durumunda birden çok iş parçacığı raporlaması ve diğer nedenlerden dolayı birden çok SurvivingReferences geri çağırma alınabilir. Bir çöp toplama sırasında birden çok geri çağırma söz konusu olduğunda, bilgiler kümülatiftir; herhangi bir SurvivingReferences geri çağırmada bildirilen tüm başvurular çöp toplamada kalır.

Gereksinimler

Platform: Bkz. Sistem Gereksinimleri.

Üstbilgi: CorProf.idl, CorProf.h

Kitaplığı: CorGuids.lib

.NET Framework Sürümleri: 2.0 sürümünden itibaren kullanılabilir

Ayrıca bkz.