2016-11-30 11 views
1

내 응용 프로그램에 문제가 있습니다. 페이지를 열려고하면 응용 프로그램에서 java.lang.OutOfMemoryError: Java heap space 오류가 발생합니다.Eclipse 메모리 분석기 : java.lang.OutOfMemoryError : Java 힙 공간

우리는 프레임 워크로 Struts2를, 서버로 Tomcat 6를, 데이터베이스 연결을 위해 Openejb를 사용하고 있습니다.

Eclipse 확장 메모리 분석기를 사용하여 메모리가 부족한 이유를 찾으려고했지만 이해하기 쉽지 않습니다.

Top consumers Description Shortest Paths to the accumulation point Accumulated Objects in dominator tree

나는이 오류가 발생하지만 데이터베이스 연결이 종료되지 않습니다 가능하며 것에 대해 정말로 확실하지 않다 : 여기

는 메모리 분석기의 보고서입니다 이 연결을 포함하는 맵은 JVM에서 커지게됩니다.

JVM에 더 많은 메모리 공간을 제공하여이 문제를 해결할 수 있지만이 문제를 해결하는 좋은 방법이 아닌 것은 확실합니다.

아무도 도와 줄 수 있습니까?

감사

+0

변경 사항이 자주 나타나는 것이 더 쉽습니다. tomcat 인스턴스에 visualvm을 연결하여 응용 프로그램이 실제 작업을 수행 할 때 어떤 일이 발생하는지 확인하십시오. –

+0

이 주제가 유용 할 수 있습니다 : http://stackoverflow.com/questions/29590527/how-to-analyze-mat-with-eclipse – Berger

답변

0

당신의 스냅 샷에 따르면, 당신의 문제는 JavaDoc을 따라하는 필드 WebappClassLoaderresourceEntries에서 온다 : 즉

The cache of ResourceEntry for classes and resources we have loaded, keyed by resource name.

, 모든 저장하는 캐시입니다 모든 리소스 파일의 메타 정보와 웹 응용 프로그램의 ClassLoader을 통해로드되는 클래스는 각 호출시 전체 클래스 경로를 검사하지 않으므로 jar 파일이 많이있을 때 매우 느릴 수 있습니다.

the source code에서 볼 수있는 한, 이미 당신이 힙 크기를 늘리는 것 외에는 해결할 방법이 없습니다.

+0

내 문제에 대한 해결책이 없습니까? JVM 메모리 힙을 막을 수는 없습니다. 그것은 내가 허용되는 메모리에 대해 많은 데이터를로드하려고하기 때문입니다. –