Bagikan melalui


Metode ICorProfilerCallback2::SurvivingReferences

Melaporkan tata letak objek di tumpukan sebagai hasil dari pengumpulan sampah yang tidak padat.

Sintaks

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

Penting

Metode ini melaporkan ukuran sebagai MAX_ULONG untuk objek yang lebih besar dari 4 GB pada platform 64-bit. Untuk objek yang lebih besar dari 4 GB, gunakan metode ICorProfilerCallback4::SurvivingReferences2 sebagai gantinya.

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 SurvivingReferences untuk pengumpulan sampah yang tidak padat. Untuk memampatkan pengumpulan sampah, ICorProfilerCallback::MovedReferences dipanggil sebagai gantinya. Satu pengumpulan sampah dapat dipadatkan untuk satu generasi dan tidak memadatkan yang lain. Untuk pengumpulan sampah pada generasi tertentu, profiler akan menerima panggilan balik SurvivingReferences atau panggilan balik MovedReferences, tetapi tidak keduanya.

Beberapa panggilan balik SurvivingReferences 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 SurvivingReferences apa pun bertahan dari pengumpulan sampah.

Persyaratan

Platform: Lihat Persyaratan Sistem.

Header: CorProf.idl, CorProf.h

Pustaka: CorGuids.lib

Versi .NET Framework: Tersedia mulai dari 2.0

Lihat juga