IBM WebSphere OutOfMemoryException
-
06-07-2019 - |
문제
종종 IBM WebSphere Application Server에서 OutefMemoryException을 발견했습니다. 내 응용 프로그램이 데이터베이스에서 거대한 데이터를 검색하기 때문에이 예외가 발생한다고 생각합니다. 따라서 모든 쿼리가 데이터를 1000 개 이상 레코드하지 말고 JVM을 설정했습니다.
+ Verbose garbage collection
+ Maximum Heap size = 1024 (RAM on my server is 16 GB and now I already change to 8192)
+ Debug arguments = -Djava.compiler=NONE -Xdebug -Xnoagent
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7777
+ Generic JVM arguments = -Dsun.rmi.dgc.server.gcInterval=60000
-Dsun.rmi.dgc.client.gcInterval=60000 -Xdisableexplicitgc
-Dws.log=E:\WebApp\log -Dws.log.level=debug
(ws.log and ws.log.level are my properties)
그리고 나는 찾았다 heapdump, Javacore 그리고 스냅 프로파일 폴더의 파일 문제의 원인에 대해 말해 줄 수 있다고 생각하지만 HeapDump, Javacore 및 SNAP 파일을 읽거나 사용하는 방법을 모르겠습니다.
OutofMemoryException을 방지/피하는 방법을 알려주십시오. 감사
해결책
이에 대한 답은 OutofMemoryException과 관련된 메시지에 따라 다릅니다. -xx : maxpermsize = ...을 시도하고 256m와 같은 것으로 설정할 수도 있습니다.
또한 어딘가에 재귀 기능이있는 경우 스택 오버플로가 발생할 수 있습니다.
가능하면 예외와 관련된 메시지를 게시하십시오. StackTrace도 도움이 될 수 있습니다.
다른 팁
힙 덤프 파일을보고 싶다면 IBM이이를 분석하는 도구를 제공합니다. 여기.
"기억에 감사드립니다" JVMS 메모리 사용에 대한 좋은 기사로,이 문제를 분석하는 데 도움이 될 수 있습니다 ...
감사합니다 Bwalliser 이 링크를 위해
JPROFILER와 같은 도구를 사용하여 디버깅 할 수 있도록 문제를 로컬로 재현하십시오. 로컬로 OOM을 강요 할 수 없더라도 JPROFILER의 메모리가 증가 할 가능성이 있습니다. 그런 다음 스냅 샷을 찍고 수집되지 않은 수업을 찾습니다. 정확한 과학은 아니지만 IBM HeepDump를 보는 것보다 훨씬 쉽습니다. 그러나 만약 당신이해야한다면, 힙 덤프를 검사하는 오래된 방법은 heproots와 함께있었습니다. 당신이있는 버전에 따라 다를 수 있습니다. 나는 일부 버전의 IBM JDK가 압축에 문제가 있으므로 메모리가 충분히 많더라도 충분히 큰 조각이 없기 때문에 OOM을 얻을 수 있습니다.
귀하의 최대 절전 모드/JPA를 지속성 제공 업체로 사용한다고 가정합니까? 두 번째 레벨 캐시를 사용하고 있습니까? 그렇다면 캐시에서 큰 결과 세트를 퇴치하는 것을 고려 했습니까?