2012-04-28 5 views
1

Java에서 java.lang.OutOfMemoryError이 발생한 지점을 정확하게 찾을 수 있습니까? 나는 더 많은 메모리가했던 방법을 정확하게 이해하기 위해 찾고OutOfMemory 오류 지점 확인

당신이 OutOfMemoryError를 잡을 아래와 같이 런타임을 요청할 수

+1

예외를 throw하고 스택 추적을 덤프합니까? 오류가 발생했을 때 코드가 무엇을하는지 정확히 알려 주어야합니다. –

+0

Kinda rough. 한 번에 JVM에서 여러 가지 일이 일어나서 어떤 스레드가 범인인지 알기가 어렵습니다. 끊어진 스레드가 모든 메모리를 먹는 스레드 일 필요는 없습니다. –

+0

@AdamLiss 질문은 코드에서 문제가 발생한 위치에 관한 것이 아닙니다. 문제는 애플리케이션에 "메모리가 너무 많습니다"라는 메모리가 얼마입니까? – JAM

답변

2

실패하기 전에 내 응용 프로그램에 주장했다.

try { 
    //... 
} catch (OutOfMemoryError er) { 
    // this will tell you how much you have used 
    long heapSize = Runtime.getRuntime().totalMemory(); 
    System.err.println("memory used "+heapSize); 
} 

당신은 당신의 코드에 실패합니다 아무 생각이없는 경우

을 (힙 메모리가 부족할 때 OutOfMemoryError가 발생한다), 당신은 종료 후크 및 출력 거기에 힙 크기를 등록 시도 할 수 있습니다.

+0

확실히 좋은 생각입니다! 감사 브루스 – JAM