나는 내 응용 프로그램에서 하나의 이미지를 폴더에서 처리하고있다. (나는 while 루프에서 이미지를 처리하고있다.) 폴더는 1000 개 이상의 images.i를 사용하고있다. 가비지 콜렉션 (GC.Collect()). 1000 이미지 처리 후 OutOfMemoryException
(비트 맵 이미지를 그림 상자에 할당 할 때 예외가 발생 함),이 문제를 해결하는 방법은 무엇입니까?C에서 OutOfMemoryException을 해결하는 방법 #
답변
이미지 사용 방법에 따라 다릅니다. 관련 인스턴스를 처분하지 않을 가능성이 있습니다. using 문을 사용하여 문장을 래핑 해보십시오.
using (var image = ...new instance created...)
{
// ...do stuff...
}
메모리 누수를 찾으십시오. WinDbg를 gcroot 명령과 함께 사용할 수 있습니다. 아래 링크를 참조하십시오.
당신은 용의자를 조사 할 필요가있다. SOS 디버깅 확장을 사용할 수 있습니다.
!DumpHeap -type LeakingClass
는 다음 주소로 GCRoot 전화와 메모리에서 개체를 핀 무엇을 참조하십시오 : 다음 명령은 당신에게 메모리에 클래스의 인스턴스와 그 주소의 목록을 제공합니다
!GCRoot <your address here>
당신 DumpHeap 명령의 결과에서 주소를 붙여 넣을 수 있습니다.
아니요. 그것은 나쁜 일을하지 않고 그 예외를 얻으려면 toallyally 좋아. 대형 힙 프레 그먼트는 여전히 해결되지 않은 문제입니다.
주 응용 프로그램의 제어하에 이미지가 다 끝났거나 다시 시작될 때까지 이미지에서 작동하는 별도의 프로세스를 열거 나 64 비트로 이동하는 것이 가장 좋습니다 (조각난 문제가 발생할 가능성이 적음) . 비트 맵 이미지가있는 PictureBox
이 하나 개의 청크에 많은 메모리를 필요로 할당 될 때
예외 관통한다. 그 이미지들에 대해 알려주시겠습니까? 그들은 얼마나 큰가? 왜 picturebox (일괄 처리는 일반적으로 이미지를 볼 필요가 없습니다.) 여하튼, 이것은 문제를 정의하고 이미지가 클 경우 예상됩니다.
하나의 이미지 크기는 1MB입니다 (비트 맵 이미지) –
메모리 또는 디스크에 1MB를 의미합니까? 메모리 크기는 얼마입니까? 메모리의 1MB는 문제가되지 않습니다. 디스크의 1MB 이미지는 수백 MB의 메모리가 될 수 있습니다. 그리고 나서 당신은 fragemtation 문제를 겪게됩니다. 문제의 예를 보려면 http://connect.microsoft.com/VisualStudio/feedback/details/521147/large-object-heap-fragmentation-causes-outofmemoryexception을 확인하십시오. – TomTom
- 1. C에서 # .lnk를 해결하는 방법 #
- 2. OutOfMemoryException을 생성하는 출력 캐시
- 3. OutOfMemoryException을 유발하는 DrawImage
- 4. MemoryStream에서 OutOfMemoryException을 쓰는 중
- 5. StreamReader.ReadLine이 OutOfMemoryException을 throw하는 이유는 무엇입니까?
- 6. GDI + DashStyle이 .NET에서 OutOfMemoryException을 throw합니다.
- 7. OAuth 2.0에서 access_token을 해결하는 방법
- 8. java.lang.NoClassDefFoundError를 해결하는 방법?
- 9. nsusredefaults 문제를 해결하는 방법
- 10. odes를 해결하는 방법
- 11. LNK2001을 해결하는 방법
- 12. 해결하는 방법 checkstyle_error.xml 오류
- 13. 캐싱 문제를 해결하는 방법
- 14. Django를 해결하는 방법 : UnboundLocalError
- 15. 어떻게 해결하는 방법 :
- 16. 과수원 문제를 해결하는 방법
- 17. JRebel 문제를 해결하는 방법?
- 18. 이 문제를 해결하는 방법?
- 19. pagerank : java.lang.StackOverflowError를 해결하는 방법?
- 20. 이 문제를 해결하는 방법
- 21. AsyncTask에서 예외를 해결하는 방법
- 22. 예외를 해결하는 방법 emgucv
- 23. 내 쿼리를 해결하는 방법
- 24. 구성 검사를 해결하는 방법
- 25. QSettings - 오류를 해결하는 방법?
- 26. 이 오류를 해결하는 방법
- 27. mysql_fetch_assoc를 해결하는 방법() 문제
- 28. MAC 오류를 해결하는 방법
- 29. SQL0418N 오류를 해결하는 방법
- 30. DB로이 솔루션을 해결하는 방법
오류를 생성하는 함수는 무엇입니까? – Gabe
비트 맵 이미지가 그림 상자에 할당 될 때 예외가 발생합니다. –
절대 GC.Collect() ..를 사용하면 안됩니다. 특히 루프가 아닙니다. 이것은 실제로 문제를 일으키고, 모든 개체 생성을 업그레이드하며, GC를 쓸모 없게 만듭니다. 심지어 문제 자체를 일으킬 수도 있습니다 ... 아래의 다른 해결책을 참조하고 수집 방법 –