|
|
게시됨 2017. 8. 14. 오후 4:49:22
|
|
|
|

VM 초기화 중에 오류가 발생했습니다 3145728KB 객체 힙을 위한 충분한 공간을 예약하지 못했습니다
최근에 자바 프로그램 작업을 하고 있습니다. 원래 저는 자바의 메모리 관리를 항상 좋아했어요. 메모리 할당에 대해 걱정할 필요 없이, 그냥 할당만 하면 가비지 콜렉터가 메모리를 되찾아줍니다. 이제 프로그램이 방대한 데이터를 가지고 개발되었고, 속도를 위해 모든 정보를 메모리에 로드할 예정입니다. 이를 통해 빠른 응답을 보장할 것입니다. 저는 여전히 메모리를 계속 세면서 제 데이터 양을 생각하고 있는데, 처음에는 이 정도면 충분할 것 같습니다(제 기기는 4G 메모리를 사용하지만, 윈도우는 3.5G를 인식하지만 현재 데이터 용량과 비교하면 괜찮을 것 같습니다).
예상치 못하게도 첫 번째 실험 프로그램은 몇 시간 동안 실행되었고 메모리 외 예외(Out of Memory Exception)를 만났습니다. 제 가상 머신 설정을 보니 -Xms512M -Xmx1024M을 설정했습니다. 생각할 겨를도 없이 바로 -Xms512M -Xmx2048M으로 변경했는데, 그 결과 오브젝트 힙을 위한 공간을 충분히 예약할 수 없었습니다. 프로그램이 일어나지 못해. 그때서야 원래 최대 메모리에도 한계가 있다는 것을 깨달았습니다. 인터넷을 검색해 보니 이 문제를 다룬 많은 글들을 찾았습니다. 마지막으로, BEA DEV2DEV 포럼에서 가장 유용한 글을 찾았습니다
여기서 진행자 YuLimin이 테스트를 진행했고 다음과 같은 결론에 도달했습니다:
회사 JVM 버전 최대 메모리(메가) 클라이언트 최대 메모리(메가) 서버
태양 1.5.x 1492 1520
SUN 1.5.5 (Linux) 2634 2660
태양 1.4.2 1564년 1564년
SUN 1.4.2 (Linux) 1900 1260
IBM 1.4.2(Linux) 2047 해당 없음
BEA JRockit 1.5 (U3) 1909 1902
지금은 JDK1.6.0_05 사용 중이고, 테스트해봤어요. 클라이언트 상태에서 가장 큰 문제는 제 JDK가 -Server 매개변수를 인식하지 못해 서버 상태를 테스트할 수 없다는 점입니다. 추정치는 거의 비슷합니다.
SUN 1.6.0 1442 노
자바에서 대용량 메모리를 사용하는 것은 불가능한 것 같습니다. 일반적인 말은 메모리가 너무 크면 가비지 컬렉션 시간이 길어진다는 것입니다. 이 역시 이해할 만합니다. 일반적으로 메모리가 부족할 때 수집되며, 2G 메모리 스캔은 1G보다 훨씬 느리고, 메모리 객체도 더 많기 때문에 추정 관계가 기하급수적으로 증가하고 있습니다.
아래에는 유리민의 시험 방법과 시험 기록이 첨부되어 있습니다.
시험 방법:명령줄 내 java -XmxXXXXM -version 명령어로 테스트해 보세요, 그리고 XXXX의 값을 점차 증가시키는데, 정상적으로 실행되면 지정된 메모리 크기가 사용 가능하다는 의미이며, 그렇지 않으면 오류 메시지가 출력됩니다.
JVM의 최대 지원 메모리를 테스트한 후 시스템 내 환경 변수를 설정하세요
변수 이름: _JAVA_OPTIONS 가치: - Xmx1G
|
이전의:jQuery 전체 화면 플러그인 "jQuery Fullscreen Plugin"이 사용됩니다다음:SSL, OV, DV, EV 인증서의 차이점
|