문제 설명 (비 힙) : 우리는 (CQ5에) 웹 응용 프로그램에서 다음과 같은 문제에 직면하고있다 :Java 프로세스 메모리 누수
시스템 구성의 세부 정보 : • 시스템 메모리 : 7기가바이트 • 의 -Xmx : 3.5 GB • XMS : MaxPermGen • 1 개의 GB : 최대 관찰 된 스레드없이 • 300메가바이트 : 620 XSS • (300 개 HTTP 요청에 속한 스레드 포함) : 기본
T 그는 ct5 java 프로세스 (서블릿 엔진을 실행 함)가 소비하는 메모리가 시간이 지남에 따라 계속 증가한다는 점을 지적합니다. 6 ~ 6.5GB를 초과하면 (시스템 메모리가 7GB에 도달) JVM이 응답하지 않습니다. (메모리가 부족하고 페이징 활동이 많아서). 그러나 힙과 퍼텐겐은 총 3.8GB (3.5 + 0.3) GB 이하로 유지됩니다. 이것은 힙이 아닌 메모리 (기본 메모리 + 스레드 스택 공간)가 몇 백개의 MB (CQ5 서버 재시작 후)에서 2-3GB (확장이 길면 4-5 시간이 지나면)까지 계속 증가한다는 것을 의미합니다. 우리의 목표는 기본적으로 타사 라이브러리, Java 코드의 간접 참조 등으로 인해 발생할 수있는 힙이 아닌 메모리에서 메모리 누수를 찾아내는 것입니다. 메모리 오류가 발생하지 않았습니다. 필요
도움말 :
- 이제 우리는 우리에게 좋은 정보와 힙 메모리에 대한 세부 사항을 제공하는 데 사용되는 도구의 대부분. 그러나 우리는 네이티브 메모리에 대한 견해를 얻을 수 없습니다. 힙이 아닌 메모리 세부 정보 (오브젝트 레벨 또는 메모리 영역 레벨)를 모니터하는 방법에 대한 유용한 제안을 요청하십시오.
- 응용 프로그램에서 유사한 문제 (힙이 아닌 메모리 누수)를 겪고 있고 힙이 아닌 메모리 누수를 해결하는 방법에 대해 알고 싶다면 에게 요청하십시오.
[valgrind] (http://valgrind.org)는 귀하의 친구입니다. – maaartinus
애플리케이션 프로파일 링 또는 JFR 사용 고려 : http://stackoverflow.com/questions/1207802/performance-cost-of-profiling-a-web-application-in-production/23377547#23377547 –
캐시 구성 확인 - 런 어웨이 메모리 사용 누락 된 항목 무효화 호출 또는 과도한 TTL 일 수 있습니다. – Java42