엔진을 만드는 사람이 되기 위해선 엔진의 동작 원리를 이해해야 합니다. 마찬가지로 자바를 사용하는 개발자라면, 단순히 개발하는 것을 넘어 자바의 실행 환경은 JVM의 동작 원리를 이해할 필요가 있습니다. 우리가 작성한 자바 코드는 바로 실행되는 것이 아니라 컴파일과 클래스 로딩, 메모리 할당, 실행 엔진을 거치는 일련의 과정을 통해 동작합니다. 이 과정은 평소에는 보이지 않지만 성능 문제나 메모리 누수, 예기치 못한 오류가 발생했을 때 직접적인 원인이 됩니다. 예를 들어, 객체를 많이 생성했을 때 왜 GC가 발생하는지, 동일한 코드인데도 실행 속도가 다른 이유는 무엇인지,또는 OutOfMemoryError가 발생하는 근본적인 원인은 무엇인지와 같은 문제는 JVM의 동작을 이해하지 않으면 근본적으로 해결하..