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, objectIDRangeStart
cObjectIDRangeLength
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