제 의견으로는 UsageThreashold
매개 변수가 메모리 누수를 감지하는 데 가장 도움이된다고 생각하지 않습니다. (누군가가 알고있는 경우 공유하십시오). 내 경험에 의하면 매개 변수가 내 응용 프로그램이 최대 힙 크기에 너무 가까워지면 시각적으로 이해하는 데 도움이되며 OutOfMemoryException
을 얻을 위험이 있습니다.
아직도 메모리 누수를 검색하기 위해 JConsole
을 사용하는 것에 관해서는, 나는 그 과정을위한 은색 총알이 없다고 생각합니다. 하지만 보통 내가하는 일은 다음과 같습니다.
메모리 누수가있는 경우 누수되는 객체가 수집되지 않으므로 Tenured Generation
이 (가) 누락되면 완전히 복구되지 않습니다. GCs. 전체가 발생합니다 내가 JConsole
을 연결하고 내 응용 프로그램의 여러 계산 후도 Perform GC
버튼을 눌러 포함하여 발생하는 다양한 GC를 (후에 경우 메모리 탭을 관찰하여 누수를 발견하려고 응용 프로그램을 실행,와
gc) 메모리가 절대로 메모리 값 이하로 떨어지지 않으면 뭔가가 새고 있다는 큰 가능성이 있음을 추적하기 시작했습니다. 누출이 클 때 메모리에서 계단 그래프를 볼 수 있습니다.
응용 프로그램에서 실행 시간이 길고 메모리를 소비하는 경우이 분석을 신중하게 수행해야합니다. 이러한 프로세스가 완료되면 이해해야합니다. 예를 들어, 계산 중 하나를 실행하고 전, 후 및 후 메모리의 전체 발전을 추적하십시오.
또한 visualVM을 시도해보십시오. 힙 덤프를 만들 수 있기 때문에 힙 덤프를 만들 수 있습니다.이 힙 덤프는 메모리에있는 개체를 파악하고 참조 그래프를 탐색하여 왜 존재하지 않는지 이해할 수 있습니다. 모은.
그러나 응용 프로그램이 '개요'또는 '메모리'탭의 최대 힙 크기에 근접하는지 확인할 수 있습니다. – Cratylus
@Cratylus : 맞습니다. jconsole이 관심을 집중시키지 않는 다른 모니터에서 실행되고있는 경우, 눈의 구석에서 쉽게 발견 할 수있는 색상 변경이 도움이됩니다. – pabrantes
다른 사용법이 없다는 것을 100 % 확신하지는 않지만 나는이 대답을 받아 들일 것입니다. – Cratylus