2015-01-29 2 views
-1

우리는 우리의 응용 프로그램이 호스팅되는 웹 로직 서버를 가지고 있습니다. 며칠 전 우리는 OutOfMemoryError: GC overhead limit exceeded 문제가 있습니다. 이제 왜 그것이 발생했는지 조사하고 싶습니다. 그래서 가비지 수집 통계를 얻는 것에 대해 봤습니다. –XX:+PrintGCDetails–XX:+PrintGCTimeStamps과 같은 GC 세부 정보를 얻을 수있는 몇 가지 명령 줄 옵션이 있습니다.웹 로직 서버에서 어떻게 가비지 콜렉션 통계를 얻을 수 있습니까?

내가 알고 싶은 것은 언제 어떻게 이러한 명령을 사용 하는가입니다. Sine은 명령 행 옵션이며, 서버를 시작하는 동안에 만 사용할 수 있다는 의미입니까? 왜냐하면 만약 그렇다면, 나는 단지 2 주 전에 발생한 문제를 파헤 치려고하기 때문에 나에게 아무 소용이없는 다가오는 GC 사이클의 세부 사항을 얻을 수 있기 때문입니다. 아니면 과거의 가비지 수집에 대한 세부 정보를 얻을 수있는 다른 방법이 있습니까?

+0

[jstat] (http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstat.html)을 사용하여 실행 된 GC의 수와 해당 GC의 수명을 모니터링 할 수 있습니다 했다. 또한 단서를 제공 할 수있는 JVM 메모리 사용법을 보여줍니다. JVM의 벤더와 versino와 일치하는 바이너리를 사용해야합니다. 그렇지 않으면 모든 값을 얻지 못할 수도 있습니다. –

+0

문제가 다시 나타나기 시작하면'jstack {pid}> stack-trace.log'와 같이 실행중인 서버에서 쓰레드/스택 덤프를 수행하고 통찰력을 얻을 수 있습니다. 거기에 이미 명령 행'-XX' 옵션없이 과거 가비지 콜렉션의 세부 사항을보기 위해 할 수있는 일은 아무것도 없다. –

답변

0

나는이 인수 라이브 응용 프로그램 시간

-XX 동안 모든 GC 활동을 포함하는 로그 파일을 생성, GC 활동 로그 수 있도록 JVM 인수 아래를 추가하는 것이 좋습니다 : + PrintGCDetails

-Xloggc : [VALID_PATH \ gc.vgc]

HP Jmeter 도구를 사용하여 파일을 분석 할 수도 있습니다. 멋진 GU입니다. 나는 GC 활동을 시각적으로 잘 표현한 도구입니다.