2013-07-30 2 views
2

에 모음의 크기를 대 내가 컬렉션을 가지고 :크기는 디스크

ConcurrentDictionary<string, string> m_Dict1;  
ConcurrentDictionary<string, string> m_Dict2; 
ConcurrentDictionary<string, string> m_Dict3; 
string m_filePath; 
string m_extension; 
string m_directoryFullPath; 
string m_fileName; 
string m_directory; 

내가 바이너리 파일로 컬렉션을 저장하면 파일 크기가 약 62meg입니다.

이진 파일에서 컬렉션을 복원하는 것을 제외하고는 거의 수행하지 않는 프로그램을 시작할 때 작업 관리자의 내 응용 프로그램 프로세스에서 내 응용 프로그램이 약 312MB를 사용하고 있음을 보여줍니다.

예기치 않은 현상이 발생 했습니까?

저장된 바이너리 파일의 크기가 메모리의 모음에있는 동일한 데이터 크기와 비슷해야합니까? 아니면 둘의 크기가 비슷해야한다고 생각하는 것이 잘못 되었습니까?

+1

동시 콜렉션에 메모리 오버 헤드가 있습니다. – SLaks

+0

... 더 큰 데이터 세트에서만 악화됩니다. – dmay

+0

대다수의 문자열의 평균 길이로 예상되는 것은 무엇입니까? 'm_DictN'의 평균 아이템 수는 얼마입니까? – dasblinkenlight

답변

2

바이너리 파일을로드하는 코드를 새 함수로 옮깁니다. 앱 main()에서이 새 함수를 호출합니다. 그 후 main()에서 항상 GC.Collect()를 호출하고 다시 확인하십시오.

+0

팁 주셔서 감사합니다. 나는 분명히이 물건에 아직 새로운 것이므로 GC 이전에 콜렉트()를 만나지 않았다. 그것을 읽고, 그것이 얼마나 유용한 도구인지 알 수 있습니다. 나는 이것을 시도 할 것이다. 시간을내어 도움이되는 조언을 해 주셔서 다시 한 번 감사드립니다. – Blau

+0

도와 드리겠습니다. http://www.youtube.com/watch?v=h9FRG5Gg1Sc에서 코드/메모리 프로파일 링에 대한 간단한 소개를 확인하십시오. 2 분 밖에 안 남기 때문에 좋은 시작을 제공해야합니다. – Nick