C#: NullReferenceException에서 OutofMemoryException을 얻는 이유는 무엇입니까?
-
13-09-2019 - |
문제
나는 얻었다 OutOfMemoryException
더 일찍 그리고 그것이 무엇인지 알 수 없었습니다. 전혀 말이되지 않았습니다. 내 코드에서 파고 들었고 갑자기 어딘가에 널을 확인하는 것을 잊어 버렸다는 것을 기억했다. 그것은 원인이되어서는 안됩니다 OutOfMemoryException
내 생각에, 그러나 나는 물론 그것을 고쳤다. 그리고 내가했을 때, 예외는 더 이상 나타나지 않았습니다!
그래서 수표를 다시 제거하고 예외를 연구했습니다. 그리고 그것이 있었음에 밝혀졌습니다 유형의 innerexception NullReferenceException
그리고 물론 스택 추적 많이 더 의미가 있습니다.
하지만 왜 내가 얻었는지 OutOfMemoryException
? 이것은 전에 나에게 일어난 적이 없다 ... 나에게는 말이되지 않는다 ...
더 많은 맥락을주고 싶지만 전체 프로젝트를 업로드하지 않으면 서 많은 말을 할 수는 없습니다. 그러나 그것이 일어난 특정 장소는 다음과 같습니다.
{
foreach (var exportParameter in exportParameters)
{
// Copy to local
var ep = exportParameter;
// Load stored values from db
...
}
int i = 1;
exportParameters
.OrderBy(ø => ø.Sequence)
.ForEach(ø => { if (!ø.Locked) ø.Sequence = i++; });
}
수정은 An을 넣는 것이 었습니다 if(exportParameters != null)
코드 블록 전에. exportParameters
a List<ExportParameter>
, 실패한 경우를 제외하고 null
.
해결책
제한된 실행 영역이 방지되도록 설계된 문제에 직면 할 수 있습니다.
(SVISH의 의견에 응답하여, 이것은 문구를 검색 할 때 첫 번째 링크입니다. http://msdn.microsoft.com/en-us/library/ms228973.aspx)
다른 팁
Oomexception을 얻는 명백한 이유 외에도 여전히 메모리를 사용할 수있는 경우에도 요청할 수 있습니다. 신뢰할 수 있고 상대적으로 가깝게 시작하는 경우 실수로 실수로 원하는 것보다 더 많은 메모리를 요청하고 있습니다 (즉, 매우 큰 배열을 요청합니다). 코드를 약간 게시하거나 최소한 할당 패턴을 설명 할 수 있습니까?