>  기사  >  Java  >  Java에서 eclipse.ini 구성 시 메모리 문제 분석 예

Java에서 eclipse.ini 구성 시 메모리 문제 분석 예

Y2J
Y2J원래의
2017-04-26 10:09:221427검색

이 글은 eclipse.ini 메모리 설정 문제에 대한 자세한 분석 및 소개입니다. 필요한 친구들이 참고할 수 있습니다

-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
여기에 몇 가지 질문이 있습니다.
1. 각 매개변수는 무엇을 의미합니까?
2. -Xmx 및 -XX:MaxPermSize를 모두 512M으로 설정한 후 일부 시스템에서는 Eclipse가 시작될 수 있지만 일부 시스템에서는 시작할 수 없는 이유는 무엇입니까?
3. eclipse.ini 파일에 위의 매개변수를 쓸 때 Eclipse가 해당 설정을 수행하지 않는 이유는 무엇입니까?
아래에서 하나씩 답변해 보겠습니다
1. 각 매개변수의 의미는 무엇인가요?
매개변수의 -vmargs는 JVM 매개변수 설정을 의미하므로 다음은 실제로 JVM 매개변수입니다. 먼저 JVM 메모리 관리 메커니즘을 이해한 후 각 매개변수의 의미를 설명합니다.
힙 및 비힙 메모리
공식 설명에 따르면 "Java Virtual Machine에는 힙이 있습니다. 힙은 런타임 데이터 영역이며 여기에서 모든 클래스 인스턴스와 배열의 메모리가 할당됩니다. . 힙은 JVM(Java Virtual Machine)이 시작될 때 생성됩니다. "JVM에서 힙 외부의 메모리를 비힙 메모리라고 합니다." JVM은 주로 힙과 비힙이라는 두 가지 유형의 메모리를 관리한다는 것을 알 수 있습니다. 간단히 말해서 힙은 Java 코드에 액세스할 수 있는 메모리이며 개발자를 위해 예약되어 있습니다. 비힙은 자체 사용을 위해 JVM용으로 예약된 메모리이므로 메서드 영역 및 JVM 내부 처리 또는 최적화(예: JIT 컴파일된 코드 캐시), 모든 클래스 구조(예: 런타임 상수 풀, 필드 및 메서드 데이터), 메서드 및 생성자에 대한 코드는 모두 오프힙 메모리에 있습니다.
힙 메모리 할당
JVM이 할당하는 초기 메모리는 -Xms로 지정되며, 기본값은 물리적 메모리의 1/64입니다. JVM이 할당하는 최대 메모리는 -Xmx로 지정되며, 기본값은 실제 메모리의 1/4입니다. 기본적으로 사용 가능한 힙 메모리가 40% 미만인 경우 JVM은 최대 제한인 -Xmx까지 힙을 늘립니다. 사용 가능한 힙 메모리가 70%를 초과하는 경우 JVM은 최소 한도인 -Xmx까지 힙을 줄입니다. -Xms. 따라서 서버는 일반적으로 각 GC 후에 힙 크기를 조정하지 않도록 -Xms 및 -Xmx를 동일하게 설정합니다.
비힙 메모리 할당
JVM은 -XX:PermSize를 사용하여 비힙 메모리의 초기 값을 설정합니다. 기본값은 물리적 메모리의 1/64입니다. XX:MaxPermSize는 최대 비힙 메모리 크기를 설정합니다. , 기본값은 물리적 메모리의 1/64/4입니다.
JVM 메모리 제한(최대값)
일단 JVM 메모리는 실제 최대 물리적 메모리로 제한됩니다(말도 안되는 소리! ㅎㅎ). 물리적 메모리가 무한하다고 가정하면 JVM 메모리의 최대값은 많습니다. 운영 체제와 관련이 있습니다. 간단히 말하면, 32비트 프로세서의 제어 가능한 메모리 공간은 4GB이지만 특정 운영 체제에서는 일반적으로 2GB~3GB로 제한됩니다(일반적으로 Windows 시스템에서는 1.5G~2G, 1.5G). Linux 시스템에서는 G-2G). 2G-3G)이며 64비트 이상의 프로세서에는 제한이 없습니다.
2. -Xmx 및 -XX:MaxPermSize를 모두 512M으로 설정한 후 일부 시스템에서는 Eclipse를 시작할 수 있지만 일부 시스템에서는 시작할 수 없는 이유는 무엇입니까?
위의 JVM 메모리 관리 소개를 통해 JVM 메모리에는 힙 메모리와 비힙 메모리의 두 가지 유형이 있음을 배웠습니다. 또한 JVM의 최대 메모리는 먼저 실제 물리적 메모리와 운영 체제에 따라 다릅니다. 따라서 VM 매개변수를 설정하면 주로 다음과 같은 이유로 프로그램이 시작되지 않습니다:
1) 매개변수의 -Xms 값이 -Xmx보다 크거나 - 값 XX:PermSize가 -XX보다 큽니다:MaxPermSize;
2) -Xmx와 -XX:MaxPermSize 값의 합이 현재 운영 체제의 최대 메모리 제한과 같은 JVM 메모리의 최대 제한을 초과합니다. 실제 물리적 메모리 등 실제 물리적 메모리에 대해 말하자면, 여기서 주목해야 할 점은 메모리가 1024MB라면 하드웨어가 그 일부를 점유하고 있기 때문에 실제 시스템에서 사용되는 1024MB가 아닐 수도 있다는 것입니다.
3. 위의 매개변수를 eclipse.ini 파일에 쓸 때 Eclipse가 해당 설정을 수행하지 않는 이유는 무엇입니까?
그렇다면 바로가기나 명령줄에서는 동일한 매개변수가 유효하지만 eclipse.ini 파일에서는 유효하지 않은 이유는 무엇입니까? 이는 eclipse.ini 파일의 설정 규칙을 따르지 않았기 때문입니다.
매개변수는 "항목 값" 형식입니다. 중간에 공백이 있는 경우 새 줄에 작성해야 합니다. 값에 공백이 있으면 큰따옴표로 묶어야 합니다. 예를 들어 -vm C:Javajre1.6.0binjavaw.exe 매개변수를 사용하여 가상 머신을 설정합니다. eclipse.ini 파일에서는
-vm
C와 같이 작성해야 합니다. :Javajre1.6.0binjavaw.exe
위에서 언급했듯이 eclipse.ini의 최종 매개변수는 다음과 같이 작성할 수 있습니다.
-vmargs
-Xms128M
-Xmx512M
-XX :PermSize=64M
-XX :MaxPermSize=128M
실제 실행 결과는 Eclipse의 "도움말"-"Eclipse SDK 정보" ​​창의 "구성 세부 정보" 버튼을 통해 확인할 수 있습니다.
Eclipse 압축 패키지와 함께 제공되는 eclipse.ini 파일의 내용은 다음과 같습니다.
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Xms40m
-Xmx256m
그 중 –launcher.XXMaxPermSize(앞에 두 개의 연결선이 있다는 점 참고)와 -XX:MaxPermSize 매개변수는 기본적으로 동일한 의미를 갖습니다. 유일한 차이점은 전자는 eclipse.exe가 시작될 때 설정되는 매개 변수이고 후자는 eclipse에서 사용하는 JVM의 매개 변수라는 것입니다. 실제로 둘 중 하나만 설정하면 –launcher.XXMaxPermSize와 다음 줄에 #을 주석 처리할 수 있습니다. 3. 기타 시작 매개변수. 듀얼 코어 CPU가 있는 경우
-XX:+UseParallelGC
매개변수를 사용해 GC 실행 속도를 높일 수 있습니다. (JDK 5에서 GC에 새로 추가된 매개변수입니다.)

위 내용은 Java에서 eclipse.ini 구성 시 메모리 문제 분석 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.