jit 이 기계어 변환해주기전에 자바 VM 으로 인터프리팅되는 구간이 소위말하는 웜업이잖아



자바 VM 개 무겁다 JIT 없었으면 망했을듯

컴파일 시간에 CDS 까지 같이 같이 구우면 안됨?



------------

ai 에 물어봄


JVM이 같아도 JAR 안에 CDS를 넣지 못하는 이유
1. JVM 실행 옵션(-Xmx, GC 종류)에 따라 내부 데이터가 바뀝니다
같은 컴퓨터, 완전히 같은 JVM 버전을 쓰더라도 애플리케이션을 켤 때 주는 옵션에 따라 CDS 데이터의 형태가 달라집니다.
  • 힙 메모리 크기: -Xmx2G로 켤 때와 -Xmx4G로 켤 때, JVM 내부의 메모리 주소(Compressed Oops) 정렬 방식이 바뀝니다.
  • 가비지 컬렉터(GC): G1GC를 쓰느냐, ZGC를 쓰느냐에 따라 메모리 배치 구조가 다릅니다. [1]
JAR 파일은 한번 빌드되면 고정되지만, 실행 옵션은 운영 서버 상황에 따라 언제든 바뀔 수 있습니다. 만약 빌드할 때의 옵션과 실행할 때의 옵션이 다르면 JVM은 JAR 안의 CDS 데이터를 읽지 못하고 에러를 내거나 무시해 버립니다.
2. 클래스패스(Classpath) 순서가 1비트만 바뀌어도 무효화됩니다
자바는 보안과 안정성을 위해 CDS 아카이브를 만들 당시의 클래스패스 목록과 순서를 내부적으로 기록해 둡니다.