2013-08-25 2 views
0

6 개의 Java 프로세스를 실행 중입니다. 각 프로세스마다 -Xms 및 -Xmx 매개 변수를 1GB로 설정했습니다. 총 힙 할당은 6GB입니다. 8 개의 실제 메모리가 있습니다.이 6 개의 프로세스를 시작한 후 "사용 가능한"명령은 6GB를 사용하고 2GB는 남겨 둡니다. 대신 "무료"는 1GB 만 사용되고 7GB는 무료임을 나타냅니다. -Xmx (AMB)는 MB 단위의 메모리를 MB 단위로 할당하는 반면 -Xmx (MB 단위)는 JVM이 B MB까지 확장 할 수 있음을 의미하므로 혼란 스럽습니다. 제 경우에는 A와 B가 모두 같습니다. 여기서 도와주세요.java 명령의 -xms 및 -xmx 인수의 차이점

+0

실제 메모리는 매우 간접적으로 가상 메모리에 연결됩니다. 힙에 할당이있을 때까지는 실제 메모리를 차지하지 않습니다 (메모리 페이지는 커밋되지 않습니다). –

+0

꽤 중복되지 않습니다. 문서는 명확하게 지정하지 않고 JVM 소스로 뛰어 들지는 않겠지 만 JVM이 초기에 OS에서 전체 초기 힙을 할당하지 않을 수도 있습니다. – chrylis

+0

@chrylis 자바 프로세스는 Xms 메모리를 자체적으로 요구하지만 이것이 실제로 많은 양의 실제 RAM이 실제로 점유되었다는 것을 의미하지는 않습니다. 그것은 모두 가상 메모리입니다. –

답변

0

Linux를 사용하는 경우, 프로세스가 메모리를 할당하더라도 프로세스가 메모리에 기록 할 때까지 메모리가 프로세스에 실제로 할당되지 않기 때문일 수 있습니다.