DacpHeapSegmentData 구조체

가비지 수집 힙 세그먼트 정보에 대한 전송 버퍼를 정의합니다.

Note

이 API는 원래 런타임에서 내부용으로 설계되었습니다. 이제 타사 사용이 지원되지만 가능하면 ICorDebugICorProfiler 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 이후 사용 가능

참고하십시오