2024-07-03-TIL
2024-07-03-TIL
Today I Learned
Heap Size
- https://www.alibabacloud.com/help/en/sae/use-cases/best-practices-for-jvm-heap-size-configuration
JVM 힙(heap)은 new로 만든 객체가 올라가는 메모리 영역이다. 힙 크기는 보통 두 옵션으로 정한다.
-Xms: 힙의 최소이자 초기 크기-Xmx: 힙의 최대 크기(-XX:MaxHeapSize와 같다). 지정하지 않으면 실행 시점에 시스템 구성을 보고 정한다.
Oracle의 java 명령 문서는 서버 배포에서는 -Xms와 -Xmx를 같은 값으로 두는 경우가 많다고 적는다. 처음부터 최대 크기로 잡아 두면 실행 중에 힙을 늘리고 줄이는 비용이 없다.
컨테이너 환경에서는 고정값 대신 비율로 정하는 방법이 있다. Linux에서는 UseContainerSupport가 기본으로 켜져 있어서, JVM이 호스트 전체가 아니라 컨테이너에 할당된 메모리와 CPU를 인식한다. 여기에 -XX:MaxRAMPercentage를 주면 그 메모리의 일정 비율을 최대 힙으로 쓴다. 기본값은 25%이고, 문서 예시처럼 -XX:MaxRAMPercentage=75로 올려 쓸 수 있다. 컨테이너 메모리 제한을 바꿀 때 JVM 옵션을 다시 계산하지 않아도 된다는 점이 장점이다.
1
java -XX:MaxRAMPercentage=75 -jar app.jar
비율을 100%에 가깝게 잡으면 안 되는 이유는 JVM이 힙 말고도 메모리를 쓰기 때문이다. 메타스페이스, 스레드 스택, 코드 캐시, 다이렉트 버퍼 같은 비힙(non-heap) 영역이 컨테이너 메모리를 같이 나눠 쓴다. 힙을 너무 크게 잡으면 힙은 남아 있는데 프로세스 전체 메모리가 제한을 넘어 컨테이너가 강제 종료될 수 있다.
AI 키워드: Apple Intelligence
Apple이 6월 10일 WWDC에서 Apple Intelligence를 발표했다. iPhone, iPad, Mac에 들어가는 개인 지능 시스템으로, 생성 모델에 사용자의 개인 맥락을 결합하는 것을 내세웠다. 가능한 처리는 기기 안에서 하고, 더 큰 모델이 필요할 때는 Private Cloud Compute라는 Apple 서버로 보낸다고 한다. 모델 성능보다 개인 데이터를 어디서 처리하느냐를 앞세운 발표라는 말이구나.
댓글
아직 댓글이 없습니다