자바 앱 실행 => JVM 프로세스 시작 및 main thread 생성
JVM은 프로세스를 실행하면서 OS로부터 Runtime Data Area 메모리를 할당받습니다.
Method Aread
JVM 스레드의 종류
-데몬 스레드
데몬 스레드는 다른 비데몬 스레드가 없다면 동작을 중지합니다.
JVM의 가비지 컬렉션, 모니터링 등 애플리케이션 운용을 위해 사용하다가 주요 스레드가 종료되면 함께 종료되어야 할 경우, 데몬으로 설정하면 유용합니다.
-비데몬 스레드
프로그램 실행 진입점인 main thread는(static void main(String[] args) 비데몬 스레드로 생성되어, 이 스레드가 동작을 중지하거나 종료하면 다른 데몬스레드들도 함께 중지하게 됩니다.
멀티 프로세싱
멀티 프로세싱은 완전히 독립된 메모리 공간을 할당받습니다.
프로세스간 통신을 위해서는 IPC(Inter Process Communication) 방법을 별도로 이용해야 하므로 스레드에 비해 비용이 큽니다.
IPC 방법으로는 파이프라인 전달, shared memory, message queue 등이 있습니다.
멀티 스레딩
멀티 스레딩은 하나의 프로세스 내에서 method area, heap은 공유하고 PC Resiter, JVM Stack, Native Method Stack 공간만 별도로 가집니다.
Method area와 heap 영역이 공유되기 때문에 프로그래밍시 동기화 문제가 발생하지 않도록 유의하여야 합니다.
프로세스보다 경량화된 독립공간을 가지기 때문에 공간 절약의 이점이 있습니다.