Aracılığıyla paylaş


ICorProfilerCallback4::SurvivingReferences2 Yöntemi

Sıkıştırılmayan çöp toplama işleminin sonucu olarak yığındaki nesnelerin düzenini raporlar. Profil oluşturucu ICorProfilerCallback4 arabirimini uyguladıysa bu yöntem çağrılır. Bu geri çağırma ICorProfilerCallback2::SurvivingReferences yönteminin yerini alır, çünkü ULONG'da ifade edilebilecek uzunlukları aşan daha büyük nesne aralıklarını raporlayabilir.

Sözdizimi

HRESULT SurvivingReferences2(  
    [in] ULONG  cSurvivingObjectIDRanges,  
    [in, size_is(cSurvivingObjectIDRanges)] ObjectID  
                objectIDRangeStart[] ,  
    [in, size_is(cSurvivingObjectIDRanges)] SIZE_T  
                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 SurvivingReferences2 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

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 SurvivingReferences2 . Atık toplamaları sıkıştırmak için bunun yerine MovedReferences2 ç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 bir çöp toplama için, profil oluşturucu bir SurvivingReferences2 geri çağırma veya MovedReferences2 geri çağırması alır, ancak ikisini birden almaz.

Belirli bir çöp toplama sırasında, SurvivingReferences2 sınırlı iç arabelleğe alma, sunucu çöp toplama sırasında birden çok geri çağırma ve diğer nedenlerden dolayı birden çok 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 SurvivingReferences2 geri çağırmada bildirilen tüm başvurular çöp toplamadan devam eder.

Profil oluşturucu hem ICorProfilerCallback hem de ICorProfilerCallback4 arabirimlerini uygularsa, SurvivingReferences2 yöntem ICorProfilerCallback2::SurvivingReferences yönteminden önce çağrılır, ancak yalnızca başarıyla döndürüldüğünde SurvivingReferences2 çağrılır. Profil oluşturucular, ikinci yöntemi çağırmaktan kaçınmak için yönteminden SurvivingReferences2 hata olduğunu belirten bir HRESULT döndürebilir.

Gereksinimler

Platform: Bkz. Sistem Gereksinimleri.

Üstbilgi: CorProf.idl, CorProf.h

Kitaplığı: CorGuids.lib

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

Ayrıca bkz.