Program Tip

Java SE 6에서 Sun JVM의 기본 최대 힙 크기는 얼마입니까?

programtip 2020. 11. 26. 19:48
반응형

Java SE 6에서 Sun JVM의 기본 최대 힙 크기는 얼마입니까?


Java SE 6에서 Sun JVM의 기본 최대 힙 크기는 얼마입니까 (즉, -Xmx 설정과 동일)?

서버 클래스 기계와 자바 SE 5에 대한 것 같은데 그것의

실제 메모리의 1/4 또는 1GB보다 작습니다.

보너스 질문 : IBM의 JVM에 대해 물어볼 수있는 것 같습니다.

java -verbose:sizes -version

썬의 JVM도 비슷하게 물어볼 수 있습니까?

편집 :

저는 Runtime.getRuntime (). maxMemory를 사용하여 Sun 문서 에서 참조 된 min (physical memory / 4, 1G)을 확인했습니다 .


java 1.6.0_21 이상 ...

$ java -XX:+PrintFlagsFinal -version 2>&1 | grep MaxHeapSize
uintx MaxHeapSize                         := 12660904960      {product}

min (1G)이 제거 된 것 같습니다.

또는 Windows에서 findstr 사용

C:\>java -XX:+PrintFlagsFinal -version 2>&1 | findstr MaxHeapSize

일부 Java 코드로 요청할 수 있습니다.

long maxBytes = Runtime.getRuntime().maxMemory();
System.out.println("Max memory: " + maxBytes / 1024 / 1024 + "M");

javadoc을 참조하십시오 .


JDK를 사용하면 jinfo를 사용하여 해당 JVM에 연결하고 <PROCESS_ID>MaxHeapSize 값을 가져올 수도 있습니다.

jinfo -flag MaxHeapSize <PROCESS_ID>

JDK6U18부터 다음은 힙 크기에 대한 구성입니다.

클라이언트 JVM에서 기본 Java 힙 구성이 수정되어 오늘날의 리치 클라이언트 애플리케이션의 성능이 향상되었습니다. 초기 및 최대 힙 크기가 더 크고 세대 별 가비지 수집과 관련된 설정이 더 잘 조정됩니다.

기본 최대 힙 크기는 실제 메모리의 절반에서 최대 192MB의 실제 메모리 크기이고 그렇지 않은 경우 실제 메모리의 1/4에서 최대 1GB의 실제 메모리 크기입니다. 예를 들어 시스템에 128MB의 실제 메모리가있는 경우 최대 힙 크기는 64MB이고 1GB 이상의 실제 메모리는 256MB의 최대 힙 크기가됩니다. 최대 힙 크기는 프로그램이이를 요구하기에 충분한 오브젝트를 작성하지 않는 한 JVM에서 실제로 사용되지 않습니다. 초기 힙 크기라고하는 훨씬 적은 양이 JVM 초기화 중에 할당됩니다. 이 양은 최소 8MB이고 그렇지 않으면 1GB의 실제 메모리 크기까지 실제 메모리의 1/64입니다.

출처 : http://www.oracle.com/technetwork/java/javase/6u18-142093.html


한 가지 방법은 jdk가 설치된 경우 bin 폴더에 jconsole이라는 유틸리티가 있습니다 (visualvm도 사용할 수 있음). 그것을 시작하고 관련 Java 프로세스에 연결하면 힙 크기 설정 및 기타 세부 정보가 무엇인지 확인할 수 있습니다.

헤드리스 또는 CLI 만 실행할 때 해당 서비스를 시작할 때 연결할 포트를 지정하면 jConsole을 LAN을 통해 사용할 수 있습니다.


이 질문에 대답하려면 Java VM이 CLIENT 모드인지 SERVER 모드인지가 중요합니다. "-client"또는 "-server"옵션을 지정할 수 있습니다. 그렇지 않으면 java는 내부 규칙을 사용합니다. 기본적으로 win32는 항상 클라이언트이고 Linux는 항상 서버이지만 여기 표를 참조하십시오.

http://docs.oracle.com/javase/6/docs/technotes/guides/vm/server-class.html

Sun / Oracle jre6u18 doc에서는 re client : 머신이 <= 192MB 인 경우 VM이 물리적 메모리의 1/2을 얻습니다. 머신이 1Gb 미만인 경우 메모리의 1/4; 최대 256Mb. 2Gb phys mem을 사용하는 32 비트 WindowsXP 시스템에서 테스트 한 결과 Java는 문서와 일치하는 256Mb를 할당했습니다.

Sun / Oracle jre6u18 문서에서 re server : client와 동일하고 혼란스러운 언어 추가 : 32 비트 JVM의 경우 기본 최대 값은 1Gb이고 64 비트 JVM의 경우 기본값은 32Gb입니다. 물리적으로 8Gb를 사용하는 64 비트 Linux 시스템에서 테스트 한 결과 Java는 물리적의 1/4 인 2Gb를 할당합니다. 128Gb 물리적 Java가있는 64 비트 Linux 시스템에서는 물리적 Java의 1/4 인 32Gb를 할당합니다.

나를 안내 해준이 게시물에 감사드립니다.

서버급 머신의 정의가 최근 변경 되었습니까?

참고 URL : https://stackoverflow.com/questions/2915276/what-is-the-default-maximum-heap-size-for-suns-jvm-from-java-se-6

반응형