2017-02-16 1 views
-4

에서 OutOfMemoryException을 throw합니다. 루프에서 나는 List<string>에 백만 개의 문자열 (대부분 2 ~ 3 자 길이)을 추가하고 있습니다. 모든 반복 끝에 문자열 목록이 지워집니다. 대부분의 반복은 문제없이 진행됩니다. 그러나 특정 반복에서 문자열 목록은 그 안에 700,000 개의 문자열 요소가있는 경우에도 OutOfMemoryException을 던집니다. 나는 왜 이런 일이 일어나고 어떻게 해결할 지 잘 모른다. 누구든지 도와 줄 수 있습니까? MSDN에서목록 <string>은 C#

세부 사항 : 당신이보고 사람들을위한 코드를 제공 havent 한 이후

+3

일부 코드 예제는 어떻습니까? –

+1

[C# : Out of Memory 예외] 가능한 중복 (http://stackoverflow.com/questions/8563933/c-sharp-out-of-memory-exception) – EJoshuaS

답변

1

, 식별하기 어려울 것입니다, 그러나 이것은에서 OutOfMemoryException의 원인 (들)입니다.

  • StringBuilder 개체를 해당 StringBuilder.MaxCapacity 속성으로 정의 된 길이 이상으로 확장하려고합니다.

  • 공용 언어 런타임은 작업을 성공적으로 수행하기에 충분한 연속 메모리를 할당 할 수 없습니다. 이 예외는 메모리 할당이 필요한 속성 할당이나 메서드 호출로 throw 될 수 있습니다.

OutOfMemoryException 예외의 원인에 대한 자세한 내용은 https://blogs.msdn.microsoft.com/ericlippert/2009/06/08/out-of-memory-does-not-refer-to-physical-memory/을 참조하십시오.

0

이것은 목록에 대한 이론적 인 최대 크기보다 훨씬 작아야합니다. 그러나 List 클래스는 배열을 기본 저장소로 사용하므로 모든 항목을 인접한 메모리 위치에 저장합니다. 메모리의 조각화가 심한 경우 연속적인 메모리 위치가 충분하지 않을 수도 있습니다.