먼저 "자바 최적화" 라는 책을 읽게 된 계기는 난 자바 백엔드 개발자라고 소개하지만, "자바" 언어 자체에 그렇게 딥하게 공부한 적이 없는 거 같다는 생각이 들었고, 프레임워크에 의존하지 않고, 언어 자체만으로 최적화를 해보고 싶었다. 들어가며JIT와 GC 성능이 향상되면서 작은 메서드를 적절히 인라이닝하고 인터페이스 및 타입 체크는 저렴하게 처리하면서 JIT컴파일러가 만든 네이티브 코드는 간결하고 효율적으로 유지하는, "좋은" 코딩 패턴을 따를게 맞습니다.그러나 경우에 따라 사람이 직접 코드를 작성하고 컴파일러 및 CPU 한계를 감안해 추상화 아키텍처를 재조정하애할 때도 있습니다.모든 성능 문제는 한가지 정답이 있는게 아니라 여러개 정답이 있고 그 중 요건에 가장 알맞은 해결책을 조합하는 게 기술이다..
JVM
JVM 구성아래 3가지만 기억Class Loader(로더): 실행을 위한 Bytecode(.class)를 가져온다.Runtime Data Area(메모리): 바이트 코드를 메모리에 얹고Execution Engine(엔진): 구동한다.(바이트코드 -> 기계어)1. Class Loaderjavac(컴파일러)를 통해 컴파일된 바이트코드는 Class Loader가 아래 Runtime Data Area에 적재컴파일 후 생성되는 바이트코드가 엄청 많은데 이걸 메모리에 한번에 올려서 구동하면 메모리 과부화... 그래서 class Loader가 필요한 클래스만 꺼내서 메모리에 올려준다.동적 로딩(Dynamic Loading): 필요한 바이트코드만을 Runtime Data Area(메모리)에 적재3가지 절차를 수행: L..