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, 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
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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin