자바의 JVM과 메모리 구조를 익혀두어 추후 안정적인 메모리 관리를 안정적으로 할 수 있는 개발을 진행하자.
JVM은 Java Virtual Machine, 자바 가상 머신의 약자를 따서 부르는 용어이다. 자바의 큰 특징중 하나가 OS에 종속적이지 않다는 점인데 JVM은 이런 자바의 특징을 실현시켜준다. 보통의 프로그램은 OS위에서 동작하지만 자바로 만들어진 프로그램은 JVM위에서 동작하게 된다. 즉 JVM은 JAVA와 OS 사이세어 중개자 역할을 수행하며 JAVA가 플랫폼 독립적으로 동작되도록 해준다. 더불어 JVM은 메모리관리, Garbage Collection을 수행한다.
JVM의 메모리 관리를 효율적으로 처리 함으로써 동일한 기능을 가진 프로그램이라고 더 좋은 성능을 낼 수 있다고 생각한다.
이미지 출처 - https://helloworld-88.tistory.com/16
이미지 출처 - https://helloworld-88.tistory.com/16
여기서 바이트 코드란 JVM이 이해할 수 있는 언어로 변환된 자바 소스 코드를 의미한다. 해당 코드의 확장자는 .class 이며 JVM이 설치된 운영체제 어디서든 실행이 가능하다.
Java Compiler에 의해서 자바 바이트 코드로 변환된 파일은 즉 소스 코드를 Java 바이트 코드로 번역한다. 이후 번역된 Java 바이트 코드를 Execution Engine을 통해서 해석되며 해석된 바이트 코드는 Class Loader에 의해서 JVM 내에 Load 된다. 이 때 Load 되는 위치는 Runtime Data Area로 이 공간은 JVM이 프로세스를 수행하기 위해 OS로 부터 할당받은 메모리 영역이다.
해당 영역은 다시 5가지 영역으로 나뉘어 진다.