issues
search
kgneng2
/
blokg
blog
MIT License
0
stars
0
forks
source link
JVM
#24
Open
kgneng2
opened
4 years ago
kgneng2
commented
4 years ago
역할
자바 Application을 class loader를 통해 읽어 실행하는 것
java와 os 사이에서 중개자 역할을 수행하여 JAVA가 OS에 구애받지 않고 재사용을 가능하게 해준다.
스택기반 가상머신
GC 수행
실행과정
프로그램이 실행되면 JVM은 OS로 부터 메모리 할당 받음
java -> byte code (.class) ( javac를 통해서)
class loader로 jvm loading
로딩된 파일은 execution engine을 통해 해석
해석된 바이프 코드는 Runtime Data Areas에 배치되어 수행
GC
힙내에서 메모리를 관리해주는것.
먼저 메모리 구조를 알아야함
minor GC
새로 생성된 대부분의 객체는 Eden에 영역에 위치. 일정시간 계속 있으면 old로 이동
Major GC
모든 객체를 검사해서 참조하지 않은 것을 삭제. Stop-the-world가 여기서 생김
그래서 다양한 알고리즘들이 있는데..g1gc를 많이 쓴듯;
HOW
힙내에 다른 객체 참조하는지 찾는다.
Mark and sweep
GC root가 존재. 탐색해 나가면서 참조하는것은 mark한다. 참조하지 않는것은 sweep한다.
root가 될수 있는것은, 쓰레드/정적변수/로컬변수/JNI레퍼런스
역할
실행과정
GC
minor GC
Major GC
HOW
Mark and sweep