ICorProfilerInfo2::GetGenerationBounds — Metoda
Pobiera regiony pamięci, które są segmentami stert, które składają się na różne generacje odzyskiwania pamięci.
Składnia
HRESULT GetGenerationBounds(
[in] ULONG cObjectRanges,
[out] ULONG *pcObjectRanges,
[out, size_is(cObjectRanges), length_is(*pcObjectRanges)] COR_PRF_GC_GENERATION_RANGE ranges[]);
Parametry
cObjectRanges
[w] Liczba elementów przydzielonych przez obiekt wywołujący dla tablicy ranges
.
pcObjectRanges
[out] Wskaźnik do liczby całkowitej, która określa całkowitą liczbę zakresów, z których część lub wszystkie zostaną zwrócone w tablicy ranges
.
ranges
[out] Tablica struktur COR_PRF_GC_GENERATION_RANGE , z których każdy opisuje zakres pamięci (czyli blok) pamięci w ramach generowania, które przechodzi odzyskiwanie pamięci.
Uwagi
Metodę GetGenerationBounds
można wywołać z dowolnego wywołania zwrotnego profilera, pod warunkiem że odzyskiwanie pamięci nie jest w toku.
Większość zmian pokoleń odbywa się podczas odzyskiwania pamięci. Generacje mogą rosnąć między kolekcjami, ale zazwyczaj nie przemieszczają się. Dlatego najciekawsze miejsca do wywołania GetGenerationBounds
to ICorProfilerCallback2::GarbageCollectionStarted
i ICorProfilerCallback2::GarbageCollectionFinished
.
Podczas uruchamiania programu niektóre obiekty są przydzielane przez środowisko uruchomieniowe języka wspólnego (CLR), zazwyczaj w generacjach 3 i 0. W związku z tym po rozpoczęciu wykonywania kodu zarządzanego te generacje będą już zawierać obiekty. Generacje 1 i 2 będą zwykle puste, z wyjątkiem fikcyjnych obiektów generowanych przez moduł odśmiecania pamięci. (Rozmiar fikcyjnych obiektów to 12 bajtów w 32-bitowych implementacjach środowiska CLR; rozmiar jest większy w implementacjach 64-bitowych). Można również zobaczyć zakresy generacji 2, które znajdują się wewnątrz modułów generowanych przez generator obrazów natywnych (NGen.exe). W takim przypadku obiekty w generacji 2 są zamarzniętymi obiektami, które są przydzielane podczas NGen.exe działa, a nie przez moduł odśmiecający pamięci.
Ta funkcja używa buforów przydzielonych przez obiekt wywołujący.
Wymagania
Platformy: Zobacz Wymagania systemowe.
Nagłówka: CorProf.idl, CorProf.h
Biblioteki: CorGuids.lib
.NET Framework wersje: dostępne od wersji 2.0