2016-07-15 1 views
0

문제점 : 간헐적 인 메모리 부족 문제가 있지만 WebSphere가 복구 중입니다. 나는 대부분의 메모리를 어떻게 사용하고 있는지 알아낼 수있는 방법을 결정하려고 노력 중이다. 앱 동특성을 가지고 있지만 Websphere에서는 작동하지 않습니다.WebSphere 7 - 런타임에 힙 메모리를 사용하는 오브젝트를 판별하는 방법은 무엇입니까?

대부분의 메모리를 사용하여 메모리 부족으로 인한 힙 덤프를 사용하는 것을 확인하는 유일한 방법은 무엇입니까?

는 서버 :는 WebSphere 7.5

JAVA 버전 : IBM 1.6

답변

0

WebSphere Application Server가 실행 중일 때 힙 덤프 (특정 시점에서 힙의 스냅 샷)와 스레드 덤프/Javacore (특정 시점에서 JVM의 스레드 목록)를 생성 할 수 있습니다.

덤프를 얻으려면 wsadmin 도구를 사용해야합니다. wsadmin 도구를 시작하고 다음 명령을 실행하십시오.

JACL 버전 :

set jvm [$AdminControl queryNames WebSphere:type=JVM,process=<servername>,node=<nodename>,*] 
$AdminControl invoke $jvm generateHeapDump 
$AdminControl invoke $jvm dumpThreads 

자이 썬 버전 (테스트되지 않은이) :

jvm = AdminControl.queryNames ('WebSphere:type=JVM,process=<servername>,node=<nodename>,*') 
AdminControl.invoke(jvm, 'generateHeapDump') 
AdminControl.invoke(jvm, 'dumpThreads') 

당신의 가치와 servername & nodename를 교체합니다. 오류가 발생하기 전과 복구 후에는 여러 덤프를 수행해야합니다.

일단 명령이 완료되면 파일 이름이 반환됩니다. 이러한 파일을 다른 워크 스테이션으로 옮기십시오 (분석은 자원 집약적 프로세스이므로). 원하는 도구를 사용하여 분석하십시오.

0

당신은 자바 모니터링 도구가 필요합니다. Dynatrace가 가장 좋아합니다. 무료는 아니지만 (개인에게는 적당하지 않습니다), 귀하의 기억이 어떻게 관리되고 있는지 정확하게 알려줄 것입니다. 그리고 Websphere와 함께 사용했습니다.

메모리 누수 또는로드 문제가 있다고 생각하십니까?

+0

로드 기준. 나는 그 누출을 생각하지 않는다. 나는 객체의 관점에서 메모리에 무엇이 들어 있는지 확신 할 수 없다. 메모리의 스냅 샷을 취하거나 조사 명령을 내리려면 WebSphere 방식이 필요할 수 있기를 바랬습니다. – haju

2

IBM JVM에는 덤프 트리거가있어 덤프를 매우 유연하게 트리거 할 수 있습니다. 당신도 수를 지정할 수 있습니다

-Xtrace:trigger=method{java/lang/String.substring,coredump} 

, 그래서 방법은 1000 번과 1001 번 입력 덤프 생산 :

을 예를 들어, 주어진 방법을 입력 할 때 덤프 JVM을 구성 할 수 있습니다
-Xtrace:trigger=method{java/lang/String.getBytes,coredump,,1000,2} 

일단 덤프가 있으면 IBM 확장 (http://www.ibm.com/developerworks/java/jdk/tools/memoryanalyzer/)과 함께 Eclipse 메모리 분석기를 사용하여 분석을 수행하는 것이 좋습니다. IBM 확장은 IBM 덤프 (원하는대로)를 구문 분석하는 방법을 알고 있으며 잠재적 인 문제점을 나타내는 메모리 사용 패턴에 대한 정보도 가지고 있습니다.