매트를 사용하여 두 개의 힙 덤프를 비교하고 있습니다. 저는 매일 힙 덤프를 가져 왔으며 매일 약 200 메가 씩 커졌습니다. 필자는 테이블이 보여주는 것 때문에 java.util.zip과 관련이 있다고 생각합니다. 그리고 최근에 많은 파일을 압축하고 압축 해제하는 새로운 프로세스를 추가했기 때문입니다. I는 분모를 열고 필터링 이때매트를 사용하여 메모리 누출을 찾는 데 도움이 필요합니다.
를 (이미지 참조). 팽창 기. 그 결과 java.util.zip.Inflater의 큰 목록이 생성되었습니다. 이제는 이러한 것을 열어 놓은 것을보고 싶습니다. 따라서 하나를 골라 약하고 부드러운 참조를 제외하고 GC 루트에 대한 경로를 실행했습니다 (이미지 참조). 이 항아리의 인플레이션과 내 처리와는 아무 상관과 관련이있다처럼
는 것 같습니다. 이 시점에서 나는 붙어있어 몇 가지 제안이 필요하다.
EDIT 1
숀 ThreadLocals을에 대해 물었다. 필터없이 dominator_tree를 보면 java.lang.ApplicationShutdownHooks가 힙의 58 %라는 것을 알 수 있습니다. 그 중 일부 항목을 확장하면 ThreadLocalMap에있는 것처럼 보입니다. 나는 그곳에 무엇을 넣었는지 어떻게 발견 할 수 있습니까?
편집 2
숀의 의견은 올바른 궤도에 나를 넣어. Glassfish v 2.0을 사용하고 있는데 memory leak이 있습니다. 새로운 LogManager를 계속 작성하여 ApplicationShutdownHooks 콜렉션에 추가합니다.
나는 ApplicationShutdownHooks를 열어 수동으로 컬렉션에서 개체를 제거하여 문제를 해결했습니다.
GC 루트에 대한 모든 인스턴스의 경로는 다음과 같습니다. 이것은 대표 샘플이 아닐 수도 있습니다. –
16k 개의 인스턴스가 있으므로 일부 인스턴스가 다를 수 있습니다. 나는 몇 가지를 살펴 보았다. 왜 내 이미지가 보이지 않는지 아는 사람 있습니까? – Preston
그들은 나에게 잘 보이고있다. –