<aside>

JVM 시리즈

  1. 왜 JVM을 알아야 할까 (+ JVM 구조 한눈에 보기)
  2. JVM의 메모리 - Runtime Data Area
  3. Class Loader와 부모 위임 원칙
  4. 실행 엔진: 인터프리터와 JIT 컴파일러
  5. Garbage Collection
  6. GC 튜닝
  7. 가짜 JVM 만들어보기 </aside>

<aside>

왜 JVM 구조를 알아야 할까?

백엔드 공부를 제대로 시작해보자 마음먹고 뭐부터 공부해야될까? 하고 주변의 조언을 구했을 때 가장 많이 들은 말이 "자바로 개발하려면, JVM부터 이해해라” 였다. 나는 빨리빨리 코드짜고 뭔가를 만들고 싶은데, 지금 JVM을 공부하는게 의미가 있을까? 라고 생각하던 도중 멘토에게 이런 말을 들었다.

"자바를 단순히 ‘코드를 작성하고 실행’하는 수준에서 사용한다면 JVM의 내부 구조를 몰라도 큰 문제는 없다. 하지만 동작 원리를 모르는 채로는 고성능 시스템을 만들 수도, 복잡한 장애를 해결할 수도 없다. 결국은 한계를 마주하게 된다."

성장하는 개발자가 되려면, 깊이 파고들 줄 아는 개발자가 되어야 한다. 그리고 그 시작은 JVM을 깊게 이해하는 것 부터 시작해보려 한다.

구체적으로, 어떤 순간에 JVM을 알아야 하는 걸까?

이 모든 상황에서 JVM이 어떻게 동작하는지를 모르면, 문제를 정확히 진단하고 해결하는 데 한계가 생긴다.

또한, JVM 구조를 알면 왜 자바가 이런 설계를 택했는지, 어떤 원리로 최적화가 가능한지를 이해할 수 있어,

더 견고하고, 더 효율적인 코드를 작성할 수 있다.

</aside>

JVM이란?

JVM(Java Virtual Machine)은 자바 프로그램을 실행하는 가상 머신이다

우리가 작성한 .java 파일은 자바 컴파일러에 의해 .class라는 바이트코드 파일로 변환되는데,

이 바이트코드를 해석하고 실행하는 주체가 바로 JVM이다

JVM은 다음과 같은 역할을 수행한다

덕분에, 우리는 운영체제나 하드웨어에 상관없이 동일한 자바 프로그램을 실행할 수 있다