내 응용 프로그램에서 메모리 성능을 향상시켜야하며 메모리 조각화에 문제가 있음을 알 수 있습니다.큰 배열의 메모리 누수 - IList를 서브 클래 싱하면 해결할 수 있습니까?
나는 레드 게이트의 앤드류 헌터에서 interesting article on large objects 읽었습니다, 그가 추천하는 솔루션 중 하나입니다 : 대형 데이터 구조는 오랜 시간 동안 을 살 필요, 특히 경우 가
경우 시간이 지남에 따라 크기가 커질 필요가있는 경우 가장 좋은 방법은 단순히 데이터 구조를 사용하거나 다른 데이터 구조로 저장하는 것입니다. 그들이 대형 개체 힙에 넣어 그래서 저장소에 매우 효과적인 방법은 10 만 개 항목이 저장소에 각각 10,000 요소를 포함 10 개 배열 수 있습니다 문제가 발생할 수 있습니다 전에 배열 는 최대 약 10,000 요소를 포함 할 수 있습니다 : 없음 큰 개체 힙 에 끝날 것이므로 조각화가 발생하지 않습니다. 이것은
IList
서브 클래스로 쓰여질 수 있으므로 은 투명하게 삭제됩니다. 기존 코드를 바꿉니다.
코드에서 제안 사항을 어떻게 구현합니까?
내 프로그램이 열릴 때마다 잔여 메모리를 남기는 객체가있는 매우 복잡한 형태입니다. 일 수있는 복잡한 목록을 찾았습니다.이 원인이 될 수 있으며 제안 사항을 구현하고 싶습니다. 이 문제를 해결
궁금한 점은 성능 병목 현상이 조각화로 인한 것일 수 있습니다. –
그의 튜토리얼 (http://j.mp/c9etnh)에서 "ANTS Memory Profiler"를 사용하면 "가장 큰 프리 블록 크기는 작지만 모든 .NET 힙 크기의 여유 공간이 큽니다." 사용되지 않은 메모리가 많아 연속 사용하지 않는 메모리 블록이 작기 때문에 메모리가 효율적으로 사용되지 않기 때문에 메모리가 부족할 위험이 있습니다. " 내 문제 인 것 같습니다. 그리고 내 컬렉션에는 LOH의 한계 인 85K를 넘는 많은 요소가 있습니다. 너무 참조하는 이벤트 처리를 조사하고 있습니다 ... – rubdottocom
죄송합니다, 아마도 귀하의 게시물을 오해했을 것입니다. "기억 성능"을 말할 때 당신이 의미하는 바를 자세히 설명해 주시겠습니까? 메모리 예외 상황에서 빠져 나왔습니까? –