이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 24728|회답: 1

[출처] 2097152KB 객체 힙을 위한 충분한 공간을 예약하지 못했습니다

[링크 복사]
게시됨 2017. 7. 24. 오전 10:43:36 | | | |
오류: 2097152KB 객체 힙을 위한 충분한 공간을 예약하지 못함

activemq를 시작했는데 할당이 너무 많아서 오류가 발생했다고 보고했어요. 그래서 MQTT 메모리를 할당할 때는 서버 메모리 크기(free -g 사용)와 JDK가 메모리 크기를 지원하는지 합쳐서 결정해야 합니다.

JVM 매개변수 설정

주요 기준:
-xms: 초기 메모리 크기
-Xmx: 최대 메모리 크기
-Xmn: 젊은 세대 규모

Java -Xmx2047M -version 명령어를 사용해 확인해 보세요:


용액:

시작 - > 제어판 - > 시스템 - > 고급 설정 - > 환경 변수 - > 시스템 변수

새로운 변수:
변수 이름: _JAVA_OPTIONS   
변수 값: -Xmx1G






이전의:MySQL은 빈 레코드가 없는 테이블을 쿼리합니다
다음:자바 가상 머신 JVM의 서버와 클라이언트의 차이점
 집주인| 게시됨 2017. 7. 24. 오전 10:45:37 |
최근에 자바 프로그램 작업을 하고 있습니다. 원래 저는 자바의 메모리 관리를 항상 좋아했어요. 메모리 할당에 대해 걱정할 필요 없이, 그냥 할당만 하면 가비지 콜렉터가 메모리를 되찾아줍니다. 이제 프로그램이 방대한 데이터를 가지고 개발되었고, 속도를 위해 모든 정보를 메모리에 로드할 예정입니다. 이를 통해 빠른 응답을 보장할 것입니다. 저는 여전히 메모리를 계속 세면서 제 데이터 양을 생각하고 있는데, 처음에는 이 정도면 충분할 것 같습니다(제 기기는 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의 값을 점차 늘립니다. 정상적으로 실행되면 지정된 메모리 용량이 사용 가능하다는 뜻입니다, 그렇지 않으면 오류 메시지가 출력됩니다.
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com