2013-03-05 2 views
3

Java 5에서 개발 한 Java 응용 프로그램에서 작업 중입니다. Java 6으로 업데이트하려고하므로 Jdk1.6을 사용하기 시작했습니다. 이 애플리케이션에 대해 적시에 반송하지 않도록 24 시간 동안 실행됩니다.Java 응용 프로그램에서 메모리 부족 오류가 발생했습니다.

이것은 모든 92 개의 스레드에서 스레드 기반 애플리케이션으로, MQ 테이블에서 메시지를 가져 와서 Oracle 테이블에 데이터를 삽입합니다.

제 질문은 가끔 있습니다. Java 6에서 메모리 부족 오류가 발생했습니다. 일주일에 한 번 응용 프로그램을 적시에 반송해야하기 때 문입니다. 또는 코드에서 메모리 누수가 있는지 확인해야합니다.

GC가 응용 프로그램을 오래 실행하거나 다시 시작하기에 충분할만큼 궁금한가요?

+4

'주/월'에 한 번 응용 프로그램을 적시에 바운스시켜야하기 때문에 이것이 맞습니까? 해결해야합니다 ... jmap -dump를 사용하여 힙 덤프를 가져 와서 Eclipse Memory Analyzer에서 진행되는 작업을 확인하십시오. '단지 GC가 응용 프로그램을 오래 실행하거나 재시작해야 할 필요가 있는지 알고 싶다면? '다시 시작하지 않아도됩니다. 윤곽이 잘 잡힌 응용 프로그램, 심지어 높은 프로파일도 영원히 실행할 수 있어야합니다 ... – ppeterka

+0

@ppeterka 그 자바 응용 프로그램이 같은 문제없이 실행해야한다고 생각합니다.이 JConsole을 사용하여 확인하려면 리눅스 서버 저것을 사용하여 분석하는 데 어려움을 겪고 있습니다. 반드시 분석을 위해 덤프를 가져 가야합니다. – AmitN

답변

0

GC는 오랜 기간 동안 정상적으로 작동합니다. 메모리 누수가 있거나 Java VM이 허용하는 것보다 더 많은 힙 공간을 사용하는 응용 프로그램이 있습니다.

-Xmx1g 또는 something like it을 사용하여 응용 프로그램을 실행하면 응용 프로그램의 힙 공간을 늘릴 수 있습니다.

관련 문제