사용자 도구

사이트 도구


java:memory

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:memory [2018/03/06 10:56]
kwon37xi [기본 Heap 메모리 설정]
java:memory [2022/01/26 14:47] (현재)
kwon37xi [Default 값]
줄 2: 줄 2:
   * [[java:debug|Java Debug]]   * [[java:debug|Java Debug]]
   * [[java:gc|Java Garbage Collection]]   * [[java:gc|Java Garbage Collection]]
 +  * [[java:memory:mat|Java Memory Analyzer(MAT)]]
 +  * [[java:memory:heaphero|HeapHero]]
 +  * [[java:memory:jxray|JXRay]]
   * [[http://blog.naver.com/salsu0/30000025219|Java Heap 영역 설명]]   * [[http://blog.naver.com/salsu0/30000025219|Java Heap 영역 설명]]
  
줄 11: 줄 14:
   * Linux 운영체제 swap 일어나는 것을 방지하기 위해 **swappiness=1** 로 조정한다. [[linux:performance|Linux Performance]]   * Linux 운영체제 swap 일어나는 것을 방지하기 위해 **swappiness=1** 로 조정한다. [[linux:performance|Linux Performance]]
  
 +===== Default 값 =====
 +  * 운영체제에 따라 Java 버전에 따라 또한 현재 실행하고 있는 시스템의 메모리 상황에 따라 기본 메모리 설정이 다를 수 있다. 아래 명령으로 확인 가능하다.
 +<code sh>
 +# java 7 이하
 +java -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'heapsize|permsize|version'
 +# java 8 이상
 +java -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'heapsize|metaspace|version'
 +
 +uintx InitialHeapSize                          := 522190848                           {product}
 +uintx MaxHeapSize                              := 8355053568                          {product}
 +</code>
 +  * 혹은 Java 애플리케이션에서 확인도 가능하다.
 +<code java>
 +System.out.println(Runtime.getRuntime().maxMemory());
 +</code>
 +  * [[https://sarc.io/index.php/java/1092-jvm-default-heap-size|JVM의 default Heap Size가 궁금하세요?]]
 +  * [[https://mkyong.com/java/find-out-your-java-heap-memory-size|Find out your Java heap memory size - Mkyong.com]]
 +  * [[https://docs.oracle.com/en/java/javase/11/gctuning/ergonomics.html#GUID-DA88B6A6-AF89-4423-95A6-BBCBD9FAE781|Ergonomics]]
 +  * 기본 규칙(Java 11)
 +    * Min : 물리 메모리의 1/64
 +    * Max : 물리 메모리의 1/4
 ===== 64Bit 운영체제에서 포인터 크기 ===== ===== 64Bit 운영체제에서 포인터 크기 =====
   * 64Bit 운영체제에서라도 64bit long이 아니라 기본적으로 32bit 포인터를 사용한다.   * 64Bit 운영체제에서라도 64bit long이 아니라 기본적으로 32bit 포인터를 사용한다.
줄 50: 줄 74:
 ===== jhat ===== ===== jhat =====
   * 힙 덤프를 분석한다.   * 힙 덤프를 분석한다.
-  * ''jhap -J-mx2048m 파일명.bin'' 실행후 http://localhost:7000/ 에서 살펴볼 수 있다.+  * ''jhat -J-mx2048m 파일명.bin'' 실행후 http://localhost:7000/ 에서 살펴볼 수 있다.
     * 힘 덤프 파일의 크기가 클 경우 OOM 에러가 발생할 수 있으므로 ''-J-mx2048m'' 지정     * 힘 덤프 파일의 크기가 클 경우 OOM 에러가 발생할 수 있으므로 ''-J-mx2048m'' 지정
   * 메모리를 너무 많이 먹어서 실제로 제대로 실행하기 힘듬.   * 메모리를 너무 많이 먹어서 실제로 제대로 실행하기 힘듬.
java/memory.1520303192.txt.gz · 마지막으로 수정됨: 2018/03/06 10:56 저자 kwon37xi