가비지 수집 힙 세그먼트 정보에 대한 전송 버퍼를 정의합니다.
Note
이 API는 원래 런타임에서 내부용으로 설계되었습니다. 이제 타사 사용이 지원되지만 가능하면 ICorDebug 및 ICorProfiler API로 작업하는 것이 좋습니다.
Syntax
struct DacpHeapSegmentData
: ZeroInit<DacpHeapSegmentData>
{
CLRDATA_ADDRESS segmentAddr;
CLRDATA_ADDRESS allocated;
CLRDATA_ADDRESS committed;
CLRDATA_ADDRESS reserved;
CLRDATA_ADDRESS used;
CLRDATA_ADDRESS mem;
// pass this to request if non-null to get the next segments.
CLRDATA_ADDRESS next;
CLRDATA_ADDRESS gc_heap; // only filled in in server mode, otherwise NULL
// computed field: if this is the ephemeral segment highMark includes the ephemeral generation
CLRDATA_ADDRESS highAllocMark;
size_t flags;
CLRDATA_ADDRESS background_allocated;
HRESULT Request(ISOSDacInterface *sos, CLRDATA_ADDRESS addr, const DacpGcHeapDetails& heap)
{
HRESULT hr = sos->GetHeapSegmentData(addr, this);
// if this is the start segment, set highAllocMark too.
if (SUCCEEDED(hr))
{
// TODO: This needs to be put on the Dac side.
if (this->segmentAddr == heap.generation_table[0].start_segment)
highAllocMark = heap.alloc_allocated;
else
highAllocMark = allocated;
}
return hr;
}
};
Members
| 회원 | 설명 |
|---|---|
segmentAddr |
힙 세그먼트의 주소입니다. |
allocated |
세그먼트의 할당된 부분 주소입니다. |
committed |
세그먼트에 대해 메모리가 커밋되는 주소입니다. |
reserved |
메모리가 세그먼트에 예약된 주소입니다. |
used |
세그먼트에 메모리가 사용되는 주소입니다. |
mem |
세그먼트 메모리의 시작 주소입니다. |
next |
다음 세그먼트의 주소입니다. 다음 세그먼트를 검색하기 위해 Request null이 아닌 경우 이 값을 전달합니다. |
gc_heap |
GC 힙의 주소입니다. 이 멤버는 서버 모드에서만 채워집니다. 그렇지 않으면 .입니다 NULL. |
highAllocMark |
높은 할당 표시입니다. 이 세그먼트가 임시 세그먼트인 경우 이 값에는 임시 생성이 포함됩니다. |
flags |
힙 세그먼트 플래그입니다. |
background_allocated |
세그먼트에 할당된 백그라운드 GC 주소입니다. |
Request |
를 호출 ISOSDacInterface::GetHeapSegmentData 하고 계산하여 구조를 채웁니다 highAllocMark. |
Remarks
이 구조는 런타임 내에 있으며 헤더 또는 라이브러리 파일을 통해 노출되지 않습니다. 이를 사용하려면 위에서 지정한 대로 구조를 정의합니다.
요구 사항
플랫폼:시스템 요구 사항을 참조하세요.
머리글: 없음
도서관: 없음
.NET 프레임워크 버전: 4.7 이후 사용 가능
참고하십시오
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET