1

이전 질문에서 나는 possible programatic ways of maximising the largest block allocatable on the LOH에게 물었습니다. 나는 여전히 문제를보고 있지만 LOH가 커지면서 크기가 줄어드는 이유에 대해 머리를 쓰려고 노력하고있다. 그러나 LOH 단편화로 인해 다른 사람들이보고 한 것과 같은 OutOfMemoryExceptions를 여전히보고있다. .왜 Large Object Heap이 예외를 발생시키기보다는 커질 수 있습니까?

StringBuilder.EnsureCapacity가 나를 위해 OutOfMemoryException을 던질 수는 있지만 다른 곳에서 다른 호출이 발생하면 LOH의 크기가 확장됩니다 (성능 카운터에 따라 점점 커지고 있음)?

답변

2

메신저 확실하지만 난이 방법을 시도 할 수 없습니다 : 응용 프로그램에서 할당 된 관리되지 않는 메모리에 대한

  1. 확인이 더 잘 처리 할 수 ​​memorymanagment에게하는 GC.AddMemoryPressure 방법을 사용합니다.
  2. 큰 할당 호출 전에 MemoryFailPoint 클래스를 사용하십시오. 거기에 당신의 응용 프로그램에서 큰 붐을 피할 수있는 기회가 있습니다. 일부 리소스를 해제하고 다시 시도하십시오.

편집 : 세 번째 방법은 추가 appdomains를 만들고 추가 appdomains에서 큰 물건을 처리하는 것입니다.

0

나는 원래 기사에 가서 내가 거기에 문제가있을 것이라고 생각하는 내용을 게시했습니다. 가서 확인해.

관련 문제