Volatile
2021. 5. 18.
Volatile 이란? public volatile Integer sample = 0; volatile 키워드를 선언한 sample 이라는 변수의 값은 컴파일 시점 최적화를 무시하고 항상 메인 메모리에 Read/Write 된다. 메인 메모리에만 Read/Write 된다는 것은 무슨 의미일까? JVM 의 Runtime Data Area 내에는 Stack Area, Heap Area 가 존재한다. 지역 변수, 매개변수 등의 정보는 Stack Area 내 존재 하며 Heap Area 에 적재된 값을 참조한다. 결론적으로 Heap Area 에 적재된 메모리는 하드웨어 어딘가에 적재되거나 읽어진다. 이 하드웨어 '어딘가'는 CPU의 캐시 메모리 이거나 코어 내 레지스터 일 수 있고 메인 메모리일 수도 있다. 즉,..