2009-10-30 3 views
1

현재 SL4 클러스터에서 sun의 Java 1.6을 사용하고 있습니다. 어떤 이유 linux (SL4)에 정의 된 기본 JVM 힙 크기는 어디입니까

은 1.6 JVM은 엄청나게 큰 힙으로 시작하고, 시작할 수 없습니다 :

java -version 
Error occurred during initialization of VM 
Could not reserve enough space for object heap 
Could not create the Java virtual machine. 

내가 예를 들어 그것을 시작하는 경우 -Xmx1800M, 그러면 정상적으로 작동합니다. 그래서, 기본 힙 크기가 어디에 설정되어 있는지, 그리고 더 중요한 것은 그것을 변경하는 방법에 대해 궁금합니다.

기계에 8GB의 물리적 메모리가 있으며, 태양의 서버 JVM이 기본 메모리의 절반 (512M)으로 시작한다고 가정합니다.하지만 1800M이 넘는 메모리를 할당하려는 경우에는 그렇지 않습니다.

편집 : _JAVA_OPTIONS을 (를) 사용하는 것이 가능하다는 것을 알았지 만, 다소 부담 스럽습니다. 나는 어딘가에 속성 파일을 기대했지만, 지금까지 그것을 찾을 수 없었습니다.

+0

32 또는 64 비트 VM? VPS? 64 비트 OS가 맞습니까? 이게 도움이 되나요? http://forum.openvz.org/index.php?t=msg&goto=7057 – cletus

+0

> uname -a Linux eddie004 2.6.18-128.7.1.el5 # 1 SMP Mon 8 월 24 일 08:12:52 EDT 2009 x86_64 x86_64에의 x86_64의 GNU/리눅스는 나는 또는 -d64 (및 -server)없이 같은 동작을 얻을 : -d64 -version 오류 개체 힙에 충분한 공간을 확보 할 수 없습니다 VM 의 초기화 중에 발생한 자바> 만들 수 없습니다 Java 가상 머신 링크가 좋았습니다. 나는 그것이 기계가 8G 물리적 메모리를 가지고 있기 때문에 있어야한다고 생각하지만, 각 사용자는 2G 만 허용됩니다. 그리고 이것은 JVM이 사양과 다르게 행동하는 것을 혼란스럽게합니다. –

+0

죄송합니다, 그 형식이 잘못되었습니다. 그것은 64 비트 OS이고, -d64는 아무런 차이가 없으며 -server도 사용하지 않습니다. 8G를 사용하는 기기와 관련이 있지만 사용자를 2G로 제한하십시오. –

답변

1

여기에는 속성 파일이 없습니다. Garbage Collector Ergonomics에 따르면 기계에서 기계의 물리적 메모리의 1/64의

큰 또는 일부 합리적인 최소 :

초기 힙 크기입니다. J2SE 5.0 이전에는 기본 초기 힙 크기는 플랫폼에 따라 달라지는 의 합리적인 최소값이었습니다. -Xms 명령 줄 옵션을 사용하여 기본값을 무시할 수 있습니다.

최대 힙 크기 : 물리적 메모리 또는 1기가바이트의 1/4의

작은. J2SE 5.0 이전에는 기본 최대 힙 크기는 64MB였습니다. -Xmx 명령 줄 옵션을 사용하여이 기본값을 무시할 수 있습니다.


참고 : 경계와 힙 크기 주어진 분수는 J2SE 5.0에 대한 정확합니다. 이 후속 릴리스에서 달라지기 때문에 컴퓨터가 더 강력 해집니다.

당신은 8GB의 RAM을 감안할 때, 기본 최대 힙 크기 1GB의 당신이

+0

좋습니다. 하지만 그건 사실이 아니며, 기본값으로 시작하지 않기 때문에 기본값이 무엇인지 알 수 없습니다. 어떤 이유로 1GB로 설정되지 않고 어떤 작업을 수행 할 수 있습니까? 이것이 우리가 가지고있는 JVM의 버그라고 말하는 것이 합당한가요? –

1

표준 속성 파일이 없습니다 거기에 자바 6를 사용하는 가정해야한다. (Sun) JVM에는 하드 코딩 된 기본값이 있습니다.

+0

안녕하세요 Brian : 런타임시에만 힙 크기를 변경할 수 있다는 것을 의미합니까? 좀 더 정확히 말하면, 기본값을 변경하고 JVM을 다시 시작하면 힙 크기가 "기본 값을 하드 코드"로 복원합니까? –

관련 문제