JVM Runtime Data Area, Singleton과 Race Condition
1. Runtime Data AreaJVM은 크게 Class Loader, Runtime Data Area, JVM Engine으로 구성되어 있고그 중 Runtime Data Area는 JVM의 메모리 영역으로,우리가 흔히 알고 있는 Thread, Heap, Static영역(혹은 method, class영역)으로 구분되어 있다.Thread 영역은 지역 변수, 파라미터, 리턴 값을 담당, 메서드 호출 시 사용하는 영역이다.Heap 영역은 객체의 저장을 담당한다.java는 class 기반의 객체 지향 프로그래밍 언어이기에, 많은 객체가 생성되고 소멸된다.객체의 소멸, 데이터 이관을 관리하기 위해서 Garbage Collection을 시행하는데, Heap영역이 그 대상이다.Static 영역은 전역변수, Sta..