2009-05-11 3 views
9

Sun의 JDK 1.4.2_18에서 실행중인 응용 프로그램에서 메모리 누수를 디버깅하고 있습니다. 이 버전은 명령 줄 param -XX : + HeapDumpOnCtrlBreak를 지원하는 것으로 보입니다. + HeapDumpOnCtrlBreak는 JVM이 컨트롤 중단을 발견했을 때 힙을 덤프하게합니다. 어떻게 이것을 리눅스 박스의 백그라운드 프로세스로 보내겠습니까? kill 시그널은 이것이 작동해야하는 방식이지만, 적어도 우분투 박스에서는 Ctrl-Break가 아닌 것을보고하지 않습니다.실행중인 Linux 프로세스에 Ctrl-Break를 보내려면 어떻게해야합니까?

업데이트 : Sun JDK 1.4.2_18 (_14는이 방법으로 힙을 덤프하는 첫 번째 사용자)으로 Kill -3을 테스트 한 결과 작동했습니다. 힙 덤프 파일이 만들어졌으며 프로세스가 계속 실행 중입니다.

답변

10

kill -QUIT (윈도우에서 ctrl-break에 의해 생성되는 쓰레드 덤프를 생성합니다. 그러나 힙 덤프 옵션으로 시도하지 않았습니다).

+0

-XX : + HeapDumpOnCtrlBreak 옵션을 지원하는 jvm이있는 리눅스 박스가 없으므로 이것을 테스트 할 수 없습니다. 그것이 작동한다는 것을 보증 할 수 없다). – bm212

+0

나는 "kill -3"보다 "kill -quit"제안을 많이 볼 것입니다. – ephemient

+0

kill -QUIT라고 말하면서 편집했습니다. – bm212

14

Ctrl- \는 Windows/Ctrl-Break와 동일한 UNIX/Linux입니다. Wikipedia 또한 리눅스 가상 콘솔에서 Ctrl-4 또는 SysRq를 사용할 수 있다고 알려줍니다. (일반 터미널 에뮬레이터가 ssh/telnet을 통해 해당 키 프레젠테이션을 전달할 때 이상한 것이 필요할 것 같습니다).

+1

예, 대개 단말기는 SIGQUIT를 보내기 위해 C- \에 바인딩됩니다. 이것은'stty quit'으로 설정 가능합니다. 모든 시스템에서 기본값인지 확실하지 않습니다. – ephemient

+0

@ephemient 항상 그렇진 않지만 이국적인 터미널조차도이를 사용하는 경향이 있습니다. 내 IBM 3161은 예를 들어 있습니다. http://i.imgur.com/6DejIxY.jpg – Wyatt8740