JMM
·
[Spring] - Study/CS
📌 1. JMM이란?JMM은 자바 프로그램에서 스레드 간에 메모리를 어떻게 읽고 쓰는지, 즉 공유 변수의 일관성(Consistency)과 동기화 규칙을 정의한 이론적 스펙입니다.🚨 2. 왜 필요한가?❗ 문제: 멀티스레딩에서는 CPU가 성능 최적화를 위해 아래와 같은 동작을 함CPU 명령어 재정렬(Instruction Reordering)캐시 계층 사용 (레지스터/코어 캐시 ↔ 메인 메모리)컴파일러 최적화 (중간 코드 생략, 변수 순서 변경 등)이로 인해 스레드마다 변수의 최신 상태가 다르게 보이는 가시성 문제, 또는 예상하지 못한 실행 순서(Race Condition)가 발생함🎯 그래서 등장한 게 JMM스레드 간에 공유 변수의 읽기/쓰기 순서를 일관성 있게 유지하도록 명확한 규칙(happens-be..