Xmx, XX:MaxPermSize가 특정 값 이상일 때 Eclipse가 충돌하는 이유는 무엇입니까?
문제
3.5GB RAM을 갖춘 WinXP SP3 32Bit에서 Eclipse 3.5.1, JDK 1.6.0_17을 실행합니다.
나는 알려진 사실을 알고 있다 Eclipse 모범 사례, 여전히 eclipse.ini를 알아내려고 노력 중입니다.
다음이 실행됩니다: -Xmx588m
그리고 이것은 그렇지 않습니다: -Xmx589m
.
와 같다 -XX:MaxPermSize
.위의 모든 것 -XX:MaxPermSize=140m
실행되지 않습니다.
죽음의 화면은 다음과 같습니다. 이것 (에서 가져옴 여기).
왜 이런 일이 일어날 수 있는지에 대한 아이디어가 있습니까?
해결책
보다 이 이클립스 버그.
일반적인 문제는 jvm이 이를 위해 연속적인 메모리 블록을 필요로 한다는 것입니다.Windows에서 프로세스는 2GB를 얻게 되며, 로드되는 다른 라이브러리는 메모리 공간의 다른 영역에 배치됩니다.라이브러리가 중간에 배치되면 기본적으로 사용할 수 있는 크기가 절반으로 줄어듭니다.
Eclipse 실행 프로그램은 그래픽을 수행하기 위해 일부 시스템 dll을 로드하며, 특히 user32.dll로 인해 컴퓨터에 설치된 항목에 따라 타사 라이브러리가 로드될 수 있습니다(참조). 여기).
더 높은 메모리 제한을 달성하려면 jvm을 Eclipse 실행 프로그램과 별도의 프로세스로 강제로 분기할 수 있습니다.jvm 프로세스는 vm이 메모리를 초기화할 때까지 이러한 추가 라이브러리를 로드하지 않습니다.javaw.exe를 가리키는 -vm 인수를 사용하여 이를 수행합니다.
eclipse -vm C:\jdk\jre\bin\javaw.exe
다른 팁
또한보십시오 이 버그 203325 다음과 같은 도구를 사용하여 메모리 사용 방법을 모니터링하는 방법에 대한 제안은 다음과 같습니다.
- jconsole
- 메모리 모니터 도구 (일식 도구)
참고 : AS 여기에 댓글을 달았습니다:
최대 메모리 제한을 선언하지 않으면 OS 메모리 관리자에게 맡겨집니다.
그만큼
-Xmx <size>
J2ME와 같은 작은 장치를 프로그래밍하는 데 유용합니다.
메모리가 제한된 작은 장치에 대한 프로그래밍중인 경우 사용할 수 있습니다.-Xmx
JVM 속성 PC를 사용하고 있지만 작은 장치를 모방합니다.