Java 응용 프로그램이 있는데 그 중 절반이 중단되고 JVM의 나머지 절반이 충돌합니다. 정지 및/또는 충돌을 일으키는 상황을보기 위해 사용할 수있는 도구가 있습니까? CentOS 5.6을 사용하고 있습니다.디버깅을위한 도구가 Java 응용 프로그램에서 중단됩니다.
답변
두 가지 경우가 있습니다.
응용 프로그램 충돌 : OOM입니까? NPE? 예외는 무엇입니까? jvm 크래시가 있으면 hs_err_.log (http://java.sun.com/j2se/1.5/pdf/jdk50_ts_guide.pdf)
이 표시됩니다. 자신의 JNI가 크래시 또는 JVM 버그를 일으킨 경우 볼 수있는 파일을 확인하십시오.
응용 프로그램 정지 : 나는 visualvm 또는 jstat (둘 다 JDK의 일부 임)로 시작합니다. 당신은 프로세스 내에서보고 도움이 될 수
다른 리눅스 도구 .. 스레드의 현재 상태를 확인하고 모든 응용 프로그램 오류가 발생하면 확인할 수 있습니다Oracle tools documentation은 매우 정교한 목록을 제공합니다. 또한 링크도 있습니다 Operating System Specific tools
우선 JVisualVM을 제안합니다. JDK와 함께 제공되므로 명령 행에 jvisualvm
을 입력하기 만하면됩니다.
일단 시작되면 실행중인 JVM에 연결할 수 있으므로 중단 된 Java 프로세스에 연결하여 실행중인 모든 스레드와 힙의 내용에 대한 스택 덤프를 검사 할 수 있어야합니다.
다른 유용한 기본 제공 도구는 다음과 같습니다 자바를 실행
jps
목록 프로세스 ID를
jstack
이
jmap
가 생성 지정된 JVM 과정에서 각 스레드에 대한 스택 덤프를 출력되는 프로세스 지정된 JVM 프로세스에 대한 힙 덤프 (jvisualvm은 힙 덤프를 생성 할 수도 있음)
jhat
은 jmap 또는 jvisualvm으로 생성 된 힙 덤프를 분석합니다.
또한 정교한 프로파일 러도 있습니다. JProfiler은 매우 높이 평가됩니다.
이러한 경우 (정지, 고정, ...) 응용 프로그램에서 어떤 일이 일어나는지 알아 내려고 힙 덤프를 분석해야합니다. JVisualVM을 사용하여 덤프를 가져올 수 있습니다. 적절한 JVM 매개 변수를 추가하여 크래시의 경우 힙 내용을 덤프하십시오.
@ Bubby4j : 충돌 이유를 알 수 있었습니까? 그건 OS와 관련이 있니? 나는 자바 기반 툴을 배치하기 위해 centos를 평가할 것이다. – Jayan
openvz에서 문제가 발생했습니다. –