2013-10-07 2 views
-1

Java 코드에서 오류가 발생합니다.java.lang.RuntimeException : java.lang.OutOfMemoryError : GC

코드 :

try{ 
..... 
..... 
} 
finally{ 

    try { 
    Map out = myDAO.copyData(12345); 

    } catch(Throwable th) { 
     throw new RuntimeException(th); 

    } 
} 

메소드 copyData 하나의 프로 시저를 호출합니다.

오류 :

java.lang.RuntimeException: java.lang.OutOfMemoryError: GC 
overhead limit exceeded 
    at 

당신이 이러한 유형의 오류의 원인이 무엇인지 알려 주 시겠어요?

+1

copyData 메서드가 너무 많은 메모리를 사용 중입니다. perm gen에 대한 JVM 설정을 확인하고 VisualVM을 사용하여 프로파일 링하는 방법을 배웁니다. – duffymo

+6

돌지 말라. –

답변

0

이 copyData 메소드는 너무 많은 메모리를 사용하기 때문에 무엇을해야하는지 다시 생각해야합니다.

반환 할 맵에서 실제로 전달되어야하는 것을 고려하십시오. 문제는지도에 엄청난 양의 물건을 저장하는 것일 수 있습니다.

너무 많은 데이터를 메모리에 저장하지 않고도 복사를 수행 할 수있는 방법이 있는지 생각해보십시오. Hibernate 세션/JPA 엔티티 관리자를 주기적으로 플러시하거나 JPA/Hibernate 코드를 모두 뽑아서 JDBC 또는 대량 복사 유틸리티 호출로 교체해야 할 수도 있습니다.

관련 문제