Metode ICorProfilerCallback4::SurvivingReferences2
Melaporkan tata letak objek dalam timbunan sebagai akibat dari pengumpulan sampah yang tidak padat. Metode ini dipanggil jika profiler telah mengimplementasikan antarmuka ICorProfilerCallback4. Panggilan balik ini menggantikan metode ICorProfilerCallback2::SurvivingReferences, karena dapat melaporkan rentang objek yang lebih besar yang panjangnya melebihi apa yang dapat diekspresikan dalam ULONG.
Sintaks
HRESULT SurvivingReferences2(
[in] ULONG cSurvivingObjectIDRanges,
[in, size_is(cSurvivingObjectIDRanges)] ObjectID
objectIDRangeStart[] ,
[in, size_is(cSurvivingObjectIDRanges)] SIZE_T
cObjectIDRangeLength[] );
Parameter
cSurvivingObjectIDRanges
[in] Banyaknya blok benda berdekatan yang selamat akibat pengumpulan sampah yang tidak padat. Artinya, nilai cSurvivingObjectIDRanges
adalah ukuran array objectIDRangeStart
dan cObjectIDRangeLength
, yang masing-masing menyimpan ObjectID
dan panjang, untuk setiap blok objek.
Dua argumen SurvivingReferences2
berikutnya berupa array paralel. Dengan kata lain, objectIDRangeStart
dan cObjectIDRangeLength
menyangkut blok objek berdekatan yang sama.
objectIDRangeStart
[in] Array nilai ObjectID
, yang masing-masing berupa alamat awal blok objek langsung yang berdekatan dalam memori.
cObjectIDRangeLength
[in] Array bilangan bulat, yang masing-masing adalah ukuran blok yang masih ada dari objek bersebelahan dalam memori.
Ukuran ditentukan untuk setiap blok yang dirujuk dalam array objectIDRangeStart
.
Keterangan
Elemen array objectIDRangeStart
dan cObjectIDRangeLength
harus ditafsirkan sebagai berikut untuk menentukan apakah objek bertahan dari pengumpulan sampah. Asumsikan bahwa nilai ObjectID
(ObjectID
) berada dalam rentang berikut:
ObjectIDRangeStart[i]
<= ObjectID
<ObjectIDRangeStart[i]
+ cObjectIDRangeLength[i]
Untuk nilai i
apa pun yang berada dalam rentang berikut, objek telah bertahan dari pengumpulan sampah:
0 <= i
<cSurvivingObjectIDRanges
Pengumpulan sampah yang tidak padat mengklaim kembali memori yang ditempati oleh objek "mati", tetapi tidak mamadatkan ruang kosong tersebut. Akibatnya, memori dikembalikan ke tumpukan, tetapi tidak ada objek "langsung" yang dipindahkan.
Runtime bahasa umum (CLR) memanggil SurvivingReferences2
untuk pengumpulan sampah yang tidak padat. Untuk memadatkan pengumpulan sampah, MovedReferences2 dipanggil. Pengumpulan sampah tunggal dapat dipadatkan untuk satu generasi dan tidak memadatkan untuk generasi lain. Untuk pengumpulan sampah pada generasi tertentu, profiler akan menerima panggilan balik SurvivingReferences2
atau panggilan balik MovedReferences2, tetapi tidak keduanya.
Beberapa panggilan balik SurvivingReferences2
mungkin diterima selama pengumpulan sampah tertentu, dikarenakan buffering internal yang terbatas, beberapa panggilan balik selama pengumpulan sampah server, dan alasan lainnya. Dalam kasus beberapa panggilan balik selama pengumpulan sampah, informasinya bersifat kumulatif; semua referensi yang dilaporkan dalam panggilan balik SurvivingReferences2
apa pun bertahan dari pengumpulan sampah.
Jika profiler mengimplementasikan antarmuka ICorProfilerCallback dan ICorProfilerCallback4, metode SurvivingReferences2
dipanggil sebelum metode ICorProfilerCallback2::SurvivingReferences, tetapi hanya jika SurvivingReferences2
berhasil ditampilkan. Profiler dapat menampilkan HRESULT yang menunjukkan kegagalan dari metode SurvivingReferences2
untuk menghindari panggilan metode kedua.
Persyaratan
Platform: Lihat Persyaratan Sistem.
Header: CorProf.idl, CorProf.h
Pustaka: CorGuids.lib
Versi .NET Framework: Tersedia mulai dari 4.5
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk