• Object Header의 Mark word의 Lock flag로 객체에 접근하는 스레드 동기화 작업을 한다.
  • Hash code는 Object.hashCode() 가 호출되는 시점에 계산
  • 나이는 GC에서 살아남은 횟수
  • Lock flag는 객체를 중심으로 멀티스레드 환경에서 경쟁조건이 발생하는 문제를 해결하기 위한 것

핫스팟 VM 객체 Lock flag

Lock flag상태Mark word 저장 정보
00Lightweight lockingLock 레코드(스핀락 동기화)
01Unlock객체의 Hash code 및 나이
01Biased locking스레드 ID, 타임스탬프, 객체 나이
10Heavyweight locking-(뮤텍스로 동기화)
11GC mark-(GC가 객체 이동 중)

JVM 객체 수준 Lock

  • Java에서 모든 함수와 자료는 Class 에 속한다.
  • 정적 멤버 변수는 인스턴스 없이 별도 존재
  • 동기화가 필요한 경우 임계 영역 통제를 위한 인스턴스가 필요함(Monitor Lock)