Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Egy tömörítő szemétgyűjtés miatt a halom objektumainak új elrendezését kell jelenteni.
Szemantika
HRESULT MovedReferences(
[in] ULONG cMovedObjectIDRanges,
[in, size_is(cMovedObjectIDRanges)] ObjectID oldObjectIDRangeStart[] ,
[in, size_is(cMovedObjectIDRanges)] ObjectID newObjectIDRangeStart[] ,
[in, size_is(cMovedObjectIDRanges)] ULONG cObjectIDRangeLength[] );
Paraméterek
cMovedObjectIDRanges [in] A tömörítési szemétgyűjtés eredményeként áthelyezett összefüggő objektumok blokkjainak száma. Ez azt jelzi, hogy az érték cMovedObjectIDRanges a tömbök és cObjectIDRangeLength a oldObjectIDRangeStarttömbök newObjectIDRangeStartteljes mérete.
A következő három argumentum MovedReferences a párhuzamos tömbök. Más szóval, oldObjectIDRangeStart[i], newObjectIDRangeStart[i]és cObjectIDRangeLength[i] minden egybefüggő objektumok egyetlen blokkját érinti.
oldObjectIDRangeStart [in] Értékek tömbje ObjectID , amelyek mindegyike az egybefüggő, élő objektumok egy blokkjának régi (szemétgyűjtés előtti) kezdőcíme a memóriában.
newObjectIDRangeStart [in] Értékek tömbje ObjectID , amelyek mindegyike az egybefüggő, élő objektumok blokkjának új (szemétgyűjtés utáni) kezdőcíme a memóriában.
cObjectIDRangeLength [in] Egész számok tömbje, amelyek mindegyike a memóriában lévő összefüggő objektumok blokkjának mérete.
A tömbökben és newObjectIDRangeStart tömbökben oldObjectIDRangeStart hivatkozott minden blokkhoz meg van adva méret.
Megjegyzések
Fontos
Ez a metódus a 4 GB-nál nagyobb méretű objektumokat jelenti MAX_ULONG a 64 bites platformokon. A 4 GB-nál nagyobb objektumok méretének lekéréséhez használja inkább az ICorProfilerCallback4::MovedReferences2 metódust.
A tömörítő szemétgyűjtő visszanyeri az elhalt objektumok által elfoglalt memóriát, és tömöríti a helyet. Ennek eredményeképpen előfordulhat, hogy az élő objektumok a halomba kerülnek, és ObjectID a korábbi értesítések által elosztott értékek megváltozhatnak.
Tegyük fel, hogy egy meglévő ObjectID érték (oldObjectID) a következő tartományon belül található:
oldObjectIDRangeStart[i]
<= oldObjectID<oldObjectIDRangeStart[i] + cObjectIDRangeLength[i]
Ebben az esetben a tartomány elejétől az objektum elejéig az alábbi eltolás történik:
oldObjectID - oldObjectRangeStart[i]
Ennek bármilyen értéke i a következő tartományban van:
0 <= i<cMovedObjectIDRanges
az újat ObjectID az alábbiak szerint számíthatja ki:
newObjectID
=
newObjectIDRangeStart[i] + (oldObjectID - oldObjectIDRangeStart[i])
Az átadott MovedReferences értékek egyike ObjectID sem érvényes a visszahívás során, mivel a szemétgyűjtés a régi helyekről az új helyekre történő objektumok áthelyezésének közepén lehet. Ezért a profilkészítők nem kíséreljék meg az objektumok vizsgálatát hívás MovedReferences közben.
Az ICorProfilerCallback2::GarbageCollectionFinished visszahívás azt jelzi, hogy az összes objektum át lett helyezve az új helyre, és az ellenőrzés elvégezhető.
Requirements
Platformok: Lásd a rendszerkövetelményeket.
Fejléc: CorProf.idl, CorProf.h
Könyvtár: CorGuids.lib
.NET-keretrendszerverziók: 2.0 óta elérhető