Java 백엔드 시스템은 가비지 컬렉터에서 처리 할 수없는 큰로드가 발생하여 메모리 누수가 발생합니다. 이 문제를 어떻게 해결할 수 있습니까?가비지 컬렉터에서 메모리 누수 해결
답변
매우 의심 스럽습니다. 네이티브 코드가 아닌 한 메모리 누수가 실제로 메모리 팽창의 경우입니다. 메모리 팽창은 절대로 누락되지 않는 강력한 참조를 갖는 객체 일뿐입니다.
Java에서 메모리 누수로 끝날 수있는 유일한 방법은 더 이상 필요하지 않은 참조를 유지하는 것입니다. 응용 프로그램은 여전히 참조에 액세스 할 수 있으므로 가비지 수집기는이를 정리할 수 없으며 실제로 가비지 수집기의 관점에서 볼 때 누수임을 알 수 없습니다.
유일한 문제는 누출 문제를 해결하는 것입니다. 그들을 찾아서 탐지하는 방법에 관해서는 ... 불행히도 많은 제안이 없습니다. 아마도 유닛 테스트에 코드를 추가하여 함수가 더 이상 필요하지 않은 메모리를 해제하는지 확인할 수 있습니다. 또는 VM 메모리를 대폭 줄인 단위 테스트를 실행하여 가장 많은 할당을 담당하는 단위를 결정할 수 있습니다. 일반적으로 누수가 발생할 수있는 패턴이 있습니다. 예를 들어 큰 문자열의 하위 문자열 (예 : 파일을 문자열로 읽는 경우)을 유지하는 경우 하위 문자열은 해당 문자열의 참조를 유지하기 때문에 이 프로그램과 누수로 이어지는 다른 일반적인 패턴을 탐지하는 프로그램이 작성 될 수 있다고 가정합니다. 그러나, 나는이 종류의 유출 가능성 탐지를 수행하는 현재 사용 가능한 프로그램을 전혀 모르고 있습니다.
비정상적인 JVM 구현을 사용하지 않는 한, "누수"현상은 필요한 것보다 훨씬 오래 객체를 유지할 경우에만 실제로 발생합니다. Java가 객체에 도달 할 수 있음을 감지하면 프로그램 의미에 영향을 줄 수 있으므로 객체를 수집하지 않습니다.
메모리 사용량을 줄이려면 더 이상 필요하지 않은 개체에 대한 참조를 끊거나 WeakReference
또는 WeakHashMap
을 사용하여 자동으로 교정 할 수있는 방식으로 개체를 저장하십시오.
정확히 무엇이 메모리를 낭비하고 있는지 추적하려는 경우 객체 액세스를 살펴보면 잠재적 인 메모리 누수를 감지하여 this paper을 확인할 수 있습니다. 이 도구는 분명히 잘 작동하지만, 익숙하지는 않습니다.
희망이 도움이됩니다.
그래서 도구는 종이 참조, SWAT, 흥미로운 소리지만, 인터넷 검색 다운로드 실제 구현을 공개하지 않습니다. 또는 나는 무엇인가 놓치고 있냐? – orangepips
흠 ... 나는 실제로 사본을 얻을 수있는 곳을 모른다. :-(나는 아무것도 찾으면 알려주지. – templatetypedef
jmap은 (는) 친구입니다. 현재 (sun/oracle) JVM에서 누출이 있지만 OP가 말하는 것에 대해 의심 스럽습니다. Finalizers는 팬텀 참조와 유사합니다 (java.lang.ref.FinalReference의 impl). 올바른 방법으로 GC를 혼란스럽게하지 않아서 finalize 메소드로 사용할 수있는 객체가 다른 것입니다.
- 1. 메모리 누수 - 가비지 컬렉터가 없음
- 2. 코코아 가비지 수집으로 메모리 누수
- 3. 메모리 누수/형식이 가비지 수집되지 않습니다.
- 4. ASP.net 가능한 메모리 누수 문제 해결
- 5. TabVisible 임시 해결 방법 - 메모리 누수
- 6. iPhone 메모리 누수 문제 해결, 시작하기
- 7. IronPython 내장 메모리 누수
- 8. 스파크 메모리 누수
- 9. 메모리 누수
- 10. 메모리 누수
- 11. 메모리 누수
- 12. C# WPF의 메모리 누수
- 13. WebView 메모리 누수
- 14. NEW 문을 통해 할당 된 메모리 누수 해결
- 15. Python : 구조가있는 CTypes 메모리 누수
- 16. Android 메모리 누수 솔루션
- 17. 간헐적 인 가비지 수집 문제 해결 - Java
- 18. WPF WriteableBitmap 메모리 누수?
- 19. iPhone에서 메모리 누수 : (
- 20. 자바 메모리 누수 문제
- 21. 아이폰 - NSKeyedUnarchiver 메모리 누수
- 22. Adobe AIR, 메모리 누수
- 23. 자바 스크립트 메모리 누수
- 24. 코어 데이터의 메모리 누수
- 25. 메모리 누수 관련
- 26. 도움말 메모리 누수 찾기
- 27. iPhone ABPeoplePickerNavigationController 메모리 누수
- 28. 아이폰 - UITextView 메모리 누수
- 29. UITableView의 메모리 누수 문제
- 30. CGImageRef 메모리 누수
Java GC 작동 방식이 아닙니다. ... –
이 숙제가 있습니까? – Mehrdad
Java 메모리 누출을 찾는 방법 : http://stackoverflow.com/questions/40119/how-to-find-a-java-memory-leak –