2012-02-25 2 views
0

Java 프로세스이 1 주일 이상 실행되었습니다. 이 과정에서 일부 데이터를 처리하고 중간 결과를 메모리에 hashmap에 저장했습니다.Java 프로세스 용 메모리에서 hashmap을 덤프합니다.

이제 코드의 버그로 인해 프로세스를 중지해야합니다. 하지만 내가 프로세스를 죽이면 hashmap에서 데이터를 잃어 버립니다. 다음에 코드를 실행할 때 다시 처리해야 할 것입니다.

해쉬맵의 덤프를 덤프을 메모리에 저장하는 방법은 무엇입니까?

+0

실용적인 방법 중 일부는 디버거를 프로세스에 연결하는 것입니다. 이 작업을 수행 할 수 있는지 여부는 JVM과이를 시작하는 데 사용되는 옵션에 따라 다릅니다. –

답변

1

프로파일 러와 같은 다양한 도구로 읽을 수있는 메모리 덤프를 트리거 할 수 있습니다. 이것은 읽기가 매우 어렵고 프로그램을 재시작하기 위해 이것을 사용하는 것을 들어 보지 못했습니다.

프로그램을 다시 시작하는 것은 사후에 수행 할 수있는 작업이 아니므로 응용 프로그램에서 설계하고 철저히 테스트해야합니다. 사람들이이 문제에 대해 걱정할 필요가없는 한 가지 방법은 데이터베이스를 사용하는 것입니다. 이는 데이터베이스가 전문적으로 설계되고 테스트되었으며 데이터 손실없이 다시 시작되기 때문입니다.

0

표준 JDK에 포함 된 JConsole 또는 visualvm을 사용하여 이미 실행중인 프로세스에 연결하고 힙 덤프를 트리거 할 수 있습니다.

그러나 Peter가 말한 것처럼 실제로이 덤프를 읽는 것은 도움이되는 도구를 찾을 수 없다면 재미 있지 않을 것입니다.

관련 문제