JPA를 사용하여 Glassfish에서 실행되는 간단한 EAR 응용 프로그램이 있습니다. 그것은 내 Oracle DB 테이블에서 레코드를 읽고 처리합니다. 처리가 끝나면 데이터베이스에 표시가되고 엔티티 관리자에서 clear()를 호출하여 처리 된 객체를 분리하고 GC 할 수 있습니다. 그러나 clear() 힙 사용법을 추가 한 후에도 전체 힙이 계속 감소하고 결국 최대 힙에 도달합니다. 누출의 원인이 될 수있는 다른 물건이 없으며 더 많은 것을 할 수 있는지 잘 모릅니다. 또한 JPA 캐시가 해제되었습니다.Java Persistence (JPA) 힙 문제
<property name="eclipselink.cache.shared.default" value="false"/>
아무도 JPA 개체가 보관되지 않도록 할 수 있습니까? 거래와 관련이있을 수 있습니까? 처리 할 레코드의 마지막 배치를 업데이트 할 때마다 새 트랜잭션을 사용합니다.
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
모든 의견을 환영합니다. 애플리케이션을 프로파일 링 할 수 있다는 것을 알고 있지만이 문제를보기가 매우 어렵습니다. 그리고 수집 한 JPA 객체가 될 것이라고 기대하더라도 엔티티를 한 번 삭제할 때 누락 된 부분이 있는지 확실하지 않습니다. 그들은 더 이상 필요하지 않습니다.
제임스
확인하십시오. – skaffman