2012-03-23 2 views

답변

15

두 가지 경우가 있습니다.

응용 프로그램 충돌 : OOM입니까? NPE? 예외는 무엇입니까? jvm 크래시가 있으면 hs_err_.log (http://java.sun.com/j2se/1.5/pdf/jdk50_ts_guide.pdf)

이 표시됩니다. 자신의 JNI가 크래시 또는 JVM 버그를 일으킨 경우 볼 수있는 파일을 확인하십시오.

응용 프로그램 정지 : 나는 visualvm 또는 jstat (둘 다 JDK의 일부 임)로 시작합니다. 당신은 프로세스 내에서보고 도움이 될 수

다른 리눅스 도구 .. 스레드의 현재 상태를 확인하고 모든 응용 프로그램 오류가 발생하면 확인할 수 있습니다

  • lsof : 프로세스가 너무 열 경우 당신은 확인하실 수 있습니다 많은 파일
  • strace : 시스템 콜 관점에서 현재 활동을보십시오.

Oracle tools documentation은 매우 정교한 목록을 제공합니다. 또한 링크도 있습니다 Operating System Specific tools

+0

@ Bubby4j : 충돌 이유를 알 수 있었습니까? 그건 OS와 관련이 있니? 나는 자바 기반 툴을 배치하기 위해 centos를 평가할 것이다. – Jayan

+0

openvz에서 문제가 발생했습니다. –

13

우선 JVisualVM을 제안합니다. JDK와 함께 제공되므로 명령 행에 jvisualvm을 입력하기 만하면됩니다.

일단 시작되면 실행중인 JVM에 연결할 수 있으므로 중단 된 Java 프로세스에 연결하여 실행중인 모든 스레드와 힙의 내용에 대한 스택 덤프를 검사 할 수 있어야합니다.


다른 유용한 기본 제공 도구는 다음과 같습니다 자바를 실행

jps 목록 프로세스 ID를

jstack

jmap가 생성 지정된 JVM 과정에서 각 스레드에 대한 스택 덤프를 출력되는 프로세스 지정된 JVM 프로세스에 대한 힙 덤프 (jvisualvm은 힙 덤프를 생성 할 수도 있음)

jhat은 jmap 또는 jvisualvm으로 생성 된 힙 덤프를 분석합니다.


또한 정교한 프로파일 러도 있습니다. JProfiler은 매우 높이 평가됩니다.

2

이러한 경우 (정지, 고정, ...) 응용 프로그램에서 어떤 일이 일어나는지 알아 내려고 힙 덤프를 분석해야합니다. JVisualVM을 사용하여 덤프를 가져올 수 있습니다. 적절한 JVM 매개 변수를 추가하여 크래시의 경우 힙 내용을 덤프하십시오.