상황을 분석하기 위해 교착 상태가 발생한 두 개의 스레드 스택을 엿볼 필요가 있습니다. JVM
은 현재 실시간으로 제공되지만 데이터가 필요하지만 프로세스에서 추출 할 수있는 도구가 필요합니다. 나는 String
유형의 스택에서 6 개의 변수 만 신경 써요. 어떤 아이디어라도 대단히 감사하겠습니다. JVM
버전 6_35
의 경우 linux
이고 JMX
이 사용 설정되었지만 profiler/debugger
연결이 설정되어 있지 않습니다. 재현하기가 매우 어렵습니다.라이브 JVM에서 현재 스레드 스택 변수를 덤프 할 수 있습니까?
답변
당신은 이것을 쉽게 할 수 없습니다. 일반 jstack
도구는 스택 만 덤프합니다. 기술적으로 당신은 전체 힙 (jmap
사용)을 버리려고 시도 할 수 있지만,이 특정 변수를 찾는 것은 가능한 경우 고통이 될 수 있습니다.
보안상의 이유로 쉽게 수행 할 수 없습니다. 스택 추적에는 자격 증명 또는 기타 중요한 데이터가 포함될 수 있습니다. 확실하지 않은 출력이 힘든 당신의 목적에 적합 할 것입니다 경우 - IBM's JVM 바와 같이
보안상의 이유로 의심 스럽습니다. "쉽게 해결할 수없는"해킹이 우려되는 좋은 방법이 아닙니다. 단지 2 센트. –
당신은, 썬/오라클 JVM과 유닉스 계열 OS에서 프로세스 당신에게 dump and keep the VM running을 줄 것이다 SIGQUIT을 보낼 수 있습니다. 아마도 다른 답변에서는 jstack
/jmap
과 비슷할 것입니다.
이것은 각 스레드의 변수 상태가 아닌 스레드 덤프 (각 스레드에 대해 호출되는 메소드의 순서)를 제공합니다. –
안녕하세요. 유권자입니까? – ShiDoiSi