본문 바로가기
전공살리기/CS

[CS 면접 기본 - 자바] 10. JVM에 대해서 알려줘

by 가든이당 2024. 10. 27.
반응형

jvm : 가비지 컬랙터 / 실행엔진 / 클래스 로더 / 메모리(runtime data area) 4가지 영역으로 이뤄짐. 

자바 어플리케이션 실행 방법 
MAC WIN 위에 자바가 미리 짜놓고 그 위에 사용자가 짤 수 있도록 해놓음 
MAC, WIN 위에 자바가 미리 짜놓은 곳이 JVM이라고 한다. 
그 위에서 공통된 자바소스를 짜면,  환경에 영향을 받지 않는다. 
java -컴파일 -> 클래스 파일  여기가 바이트 코드다. 
이거를 JVM이 읽어서, class loader를 통해 자바의 메모리 
(Runtime Data area)올리고, 실행엔진이 동작시킨다. 

정리) 컴파일러가 java를 클래스 파일로 바꾸는데 이 바꾼코드를 바이트 코드라고 합니다. 이 바이트 코드는 JVM의 클래스 로더를 통해서 JVM의 메모리인 런타임 데이터 영역에 로드되구요. 로딩덴 바이트코드 실행엔진에 의해 실행되게 됩니다. 

이과정에서 GC의 작동과 스레드 동기화 등이 이루어집니다. 

자바 메모리 구조 : 5가지가 있다. 
스래드별 PC 레지스터, JVM 스택, native method 스택 
공통 : Method Area, Heap 

PC 레지스터는 JVM 명령어를 가지고 있음. 
STACK : 함수의 정보(매개변수, 지역변수 등) 

[가비지 컬랙션]
JVM에서 메모리 관리를 해주는 모듈입니다. 
힙메모리에서 더이상 참조되지 않는 객체들을 메모리에서 제거하는 모듈입니다. 개발자가 직접 메모리를 정리하지 않아도 개발 속도가 향상되는 장점이 있지만, 마크엔스윕이라는 과정에서 참조되지 않는 객체를 찾는 과정이 있는데 이때는 쓰레드가 잠깐 중단되어 성능이 떨어지는 단점이 있습니다. 
 C++와의 가장 큰 차이점이라고 볼 수 있는데요. 

반응형