바보 같은 질문이지만, winforms 응용 프로그램에서 현재 작업하고 있습니다. 나는 통계 목적으로 메모리에 보유 된 List<[SomeObject]>
에 의해 할당되거나 사용 된 바이트의 양을 얻고 싶습니다. 이것이 가능한가? 가능한 옵션을 검색했지만 분명히 myList.GetTotalBytes()
메소드가 없습니다. 내가 런타임이 개체의 크기를 얻기의 신뢰할 수있는 프로그램 방법을 제공 확실하지 않다목록의 바이트 크기를 얻으십시오 <T>
답변
그러나 당신에게 열려있는 몇 가지 옵션이 있습니다 :
- 는
- 사용 Marshal.SizeOf() (반환 CLR 프로파일 러와 같은 도구를 사용하여 개체의 관리되지 않는 크기)
- 은 정말 당신이 무슨 뜻인지에 따라 달라집니다 근사치
바이너리로 개체를 직렬화. 목록 자체에서 사용되는 바이트 수를 예측할 수 있습니다. 그러나 목록이 수집에 적합 해지면 가비지 수집에 적합한 바이트 수를 예측하는 것과 같지 않습니다. 목록
비트 :
- 백킹 어레이 (
T[]
- 만리스트에 액세스 할 수있는 배열을 참조) - 크기는 (INT)
- 싱크 루트 (기준)
- 버전 번호 (INT) 까다로운 비트 카운트 얼마나 결정된다
. 이들 각각은 계산하기 쉽습니다 (특히 T가 참조 유형이라는 것을 알고있는 경우). 이라고 표시된의 수를 계산 하시겠습니까? 그 참조는 유일한 것입니까, 그렇지 않은 것입니까?
"통계 목적으로"알고 싶다고 말하면 더 정확 할 수 있습니까? 자신이 정말로 관심이있는 내용 (그리고 목록에있는 내용과 동일한 객체에 대한 다른 참조가있을 수 있는지에 대한 약간의 정보)을 말할 수 있다면 더 많은 도움을 줄 수 있습니다.
안녕 존, 고맙습니다 4the 답장. 미안 4 분명하지 않다. 목록은 LINQ 쿼리에서 채워지는 테이블 엔터티 컬렉션입니다. 여기에는 주로 string 및 dateTime 유형이 포함됩니다. – Shalan
"통계 목적으로"- 내 쿼리가 10,000 개의 Entity 개체가 포함 된 컬렉션을 생성한다고 가정하고 각 개체가 평균 25 바이트의 메모리를 차지하는 경우 모든 엔터티의 누적 바이트 합계 목록에있는 객체 – Shalan
앞서 언급했듯이 객체를 반복하고 각 속성을 드릴 다운하는 대안을 찾고 있습니다. Jan – Shalan
이것은 완전한 말일지도 모르는 대답 일 수도 있지만, 나는 사지에 나가서 통계 비교를한다면 이진수를 MemoryStream
으로 serialize 한 다음 등의 Length
재산보고 :이 프레임 워크의 다른 버전 사이에서 변경할 수 있으며, 단 하나의 프로그램 내에서 객체 그래프 사이의 비교를 위해 유용 할 것이라고
List<string> list = new List<string>
{
"This",
"is",
"a",
"test"
};
using (Stream stream = new MemoryStream())
{
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, list);
Console.WriteLine(stream.Length);
}
를 적어 둡니다을.
- 1. CFHTTPStream의 파일 크기를 얻으십시오
- 2. 자바 주어진 글꼴 크기를 얻으십시오
- 3. 파일 찾아보기에 파일 크기를 얻으십시오
- 4. x, y 포인트 목록의 경계를 얻으십시오.
- 5. 웹상에서 이미지의 크기를 얻으십시오 - 메모리 돼지를 피하십시오?
- 6. 안드로이드 - 실제로 할당 된 RAM 크기를 얻으십시오
- 7. 플렉스 3 - 구성 요소의 실제 크기를 얻으십시오
- 8. 바이트 단위로 GtkTextBuffer의 정확한 크기를 얻는 방법?
- 9. 목록에있는 문자열을 얻으십시오 <String[]>
- 10. 2 바이트 문자 또는 1 바이트 문자
- 11. 두 목록의 차이점 <FileInfo>
- 12. 목록의 전체 복사본 <T>
- 13. 목록의 동적 유형 <T>?
- 14. 목록의 Contains() 메서드 <T>
- 15. 일반 목록의 레코드 필터링 <string>
- 16. 목록의 개체를 사용하여 ListView 채우기 <>
- 17. 목록의 항목을 수정하십시오 <T> 빨리
- 18. 스키마의 목록에서 가장 긴 하위 목록의 크기를 가져옵니다.
- 19. ListAnimate와 함께 사용 티카에서 이미지 목록의 크기를 조정
- 20. 로드 된 후 OpenGL 텍스처 크기를 바이트 단위로 찾기
- 21. ASP.NET 캐시의 크기를 바이트 단위로 결정하는 방법은 무엇입니까?
- 22. C#에서 세션 개체의 크기를 바이트 단위로 가져올 수 있습니까?
- 23. JDBC : 커밋 된 데이터 크기를 바이트 단위로 가져올 거리가 있습니까?
- 24. 파일 크기를 바이트 단위로 저장하는 가장 좋은 방법은 무엇입니까?
- 25. PHP 이미지가 바이트 배열로 저장되면 이미지 크기를 얻습니다.
- 26. LINQ에서 SQL로 결과 집합의 크기를 바이트 단위로 결정하는 방법
- 27. 사람이 읽을 수있는 방식으로 바이트 크기를 지정하는 간단한 방법은 무엇입니까?
- 28. 크기 조정없이 바이트 이미지 크기를 줄이고 품질은 C#에서
- 29. 형식을 통해 벡터의 바이트 크기를 가져 오는 방법이 있습니까?
- 30. HTTPRequest/HTTPResponse 헤더 크기를 바이트 단위로 가져 오기
와우, 빠른 것이 었습니다! 감사 4 감사합니다! 불행히도, 런타임에 사용할 수있는 메소드를 찾고 있는데, 목록을 찢어 내고 각 객체를 반복하는 작업을 포함하지 않을 것입니다. – Shalan
은 CLR 프로파일 러에 대한 언급을 놓쳤습니다. 이전에는 사용하지 않았지만, 그것을 사용해 주셔서 감사합니다. – Shalan