2012-06-12 6 views
13

힙 공간 문제가 있습니다. 내 프로그램은 간단합니다. 두 명의 액터가 있습니다 (& 수신). "전송"액터가 초당 10000 개의 객체를 "수신"하도록 전달하고 수신하면 해당 객체를 게시합니다. 수신 된 수신자는 컨테이너에 저장되지만 컨테이너는 매초 비워집니다. 컨테이너에 공간이 부족할 가능성은 없습니다. 이제 420000 개체가 지나면 "ioconsole 업데이터에 문제가 발생했습니다" 오류가 발생합니다. 그리고 내가 세부 사항으로 이동하면 내부 오류 :: Java 힙 공간힙 공간이 부족합니다.

힙 크기를 늘려 보았습니다. 내 힙 크기는 8096m이고 최대 허용 크기는 4096입니다.

visualVm을 사용하여 코드를 모니터링하고 있으며 힙 크기가 atall을 초과하지 않는 것으로 나타났습니다. 문제를 해결하는 방법으로 완전히 비어 있습니다.

다른 가능한 시나리오로 인해 이러한 오류가 발생할 수 있음을 알려줄 수 있습니까?

답변

35

IOConsole은 프로그램이 아닌 Eclipse 클래스입니다. System.out에 많이 인쇄하고 있습니까? 창> 환경 설정에서 "콘솔"을 검색하십시오. 모든 콘솔 버퍼에 대해 일종의 제한을 설정하십시오. 프로그램에서 출력량을 줄여보십시오. 어쩌면 파일에 기록 할 수 있습니다.

-Xloggc:/tmp/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps 
+0

그렇다면 lagback.xml 파일로 printf 행을 찾을 수 없었습니다. 해당 파일의 상태가 변경되면 로그 줄이 줄어들고 오류가 줄어 듭니다. 고마워요 .. – Rags

+0

'고정 너비 콘솔'해결 된 광산 선택을 취소 ... – KillBill

5

당신은 당신에게 GC가하고있는 무엇 메모리 사용의 아이디어를 제공하기 위해 다음과 같은 JVM 인수를 추가 할 수 있습니다.

솔루션 :

오른쪽 콘솔을 클릭 -> 환경 설정

제한 콘솔.

3

이 문제는 콘솔의 버퍼 크기로 인해 발생했습니다 :

0

문제가 발생하여 Eclipse에서 힙 및 버퍼 설정을 변경하여 문제를 해결하려고했습니다. 그러나 나는 그것을 해결할 수 없었다. 그런 다음 프로그램에 메모리 누수가 있고 스레드 수가 늘어나는 것을 발견했습니다. 문제는 제가 버그를 고친 후에 해결되었습니다. 나는 메모리 누출이 그럴 가능성이 가장 큰 이유는 아니라고 생각한다.

관련 문제