J-C-03 JVM 객체 헤더의 Lock flag와 Java Memory Model 작업 메모리까지 한 번에 정리하기

글 정보
카테고리
Programming/Java/Core
태그
JavaLevel2

객체 메모리 레이아웃 복습

Object Header 구성

Lock flag는 무엇을 해결하려고 있나

Lock flag가 중요한 이유

HotSpot에서 Lock 상태는 어떻게 변하나

메모에 있던 “00이면 스핀락”은 어떻게 보정하면 좋나

인스턴스 락과 static 락의 차이

“static은 객체가 없어서 통제 불가”는 어떻게 봐야 하나

예시 코드

class Counter {
    private int x = 0;
    private static int y = 0;
    public synchronized void incX() {
        x++;
    }
    public static synchronized void incY() {
        y++;
    }
}

JVM과 별개인 CPU 캐시 일관성

메모 구조 메모의 사실 관계 보정

캐시 일관성과 Java는 진짜 상관이 없나

JVM 메인 메모리와 작업 메모리 JMM 핵심

메인 메모리와 작업 메모리 모델

제일 중요한 규칙

JMM 동기화 프로토콜 Read Load Store Write

왜 모든 접근에 동기화를 안 하나

실전 관점에서 한 줄 결론

참고로 알아두면 좋은 변화