문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
java:memory [2017/12/17 20:38] kwon37xi [Code로 heap dump 뜨기] |
java:memory [2022/01/26 14:47] (현재) kwon37xi [Default 값] |
||
---|---|---|---|
줄 2: | 줄 2: | ||
* [[java: | * [[java: | ||
* [[java: | * [[java: | ||
+ | * [[java: | ||
+ | * [[java: | ||
+ | * [[java: | ||
* [[http:// | * [[http:// | ||
+ | ===== 기본 Heap 메모리 설정 ===== | ||
+ | * https:// | ||
+ | * 장비 메모리에서 OS와 다른 애플리케이션이 사용하는 것을 제외하고 설정할 수 있다.(보통 2GB정도 남겨두고 나머지를 설정하면 될듯) | ||
+ | * 하지만 Lucene의 경우 off heap 메모리를 사용하기 때문에 ElasticSearch는 장비 메모리의 50%만 heap으로 설정함. off heap 사용시에 관련 사항 주의. | ||
+ | * 운영체제 메모리가 아무리 많아도 heap은 32GB를 넘기지는 않게 한다. 31GB 정도 추천 | ||
+ | * Linux 운영체제 swap 일어나는 것을 방지하기 위해 **swappiness=1** 로 조정한다. [[linux: | ||
+ | |||
+ | ===== Default 값 ===== | ||
+ | * 운영체제에 따라 Java 버전에 따라 또한 현재 실행하고 있는 시스템의 메모리 상황에 따라 기본 메모리 설정이 다를 수 있다. 아래 명령으로 확인 가능하다. | ||
+ | <code sh> | ||
+ | # java 7 이하 | ||
+ | java -XX: | ||
+ | # java 8 이상 | ||
+ | java -XX: | ||
+ | |||
+ | uintx InitialHeapSize | ||
+ | uintx MaxHeapSize | ||
+ | </ | ||
+ | * 혹은 Java 애플리케이션에서 확인도 가능하다. | ||
+ | <code java> | ||
+ | System.out.println(Runtime.getRuntime().maxMemory()); | ||
+ | </ | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * 기본 규칙(Java 11) | ||
+ | * Min : 물리 메모리의 1/64 | ||
+ | * Max : 물리 메모리의 1/4 | ||
===== 64Bit 운영체제에서 포인터 크기 ===== | ===== 64Bit 운영체제에서 포인터 크기 ===== | ||
* 64Bit 운영체제에서라도 64bit long이 아니라 기본적으로 32bit 포인터를 사용한다. | * 64Bit 운영체제에서라도 64bit long이 아니라 기본적으로 32bit 포인터를 사용한다. | ||
줄 43: | 줄 74: | ||
===== jhat ===== | ===== jhat ===== | ||
* 힙 덤프를 분석한다. | * 힙 덤프를 분석한다. | ||
- | * '' | + | * '' |
* 힘 덤프 파일의 크기가 클 경우 OOM 에러가 발생할 수 있으므로 '' | * 힘 덤프 파일의 크기가 클 경우 OOM 에러가 발생할 수 있으므로 '' | ||
* 메모리를 너무 많이 먹어서 실제로 제대로 실행하기 힘듬. | * 메모리를 너무 많이 먹어서 실제로 제대로 실행하기 힘듬. |