자바 메모리 모델은 특정 스레드에서 메모리를 대상으로 취하는 작업이 다른 스레드에게 어떻게 보이는지의 여부를 명시하고 있다.

메모리 모델 : 프로그램이 메모리 구조에서 어느 정도의 기능을 사용할 수 있을지에 대한 정보를 제공하고, 메모리의 내용을 서로 공유하고자 할 때 프로세스 간의 작업을 조율하기 위한 특별한 명령어(memory barrier)로는 어떤 것들이 있으며 어떻게 사용해야 하는지에 대한 정보를 제공한다.

JMM은 서로 다른 하드웨어가 갖고 있는 각자의 메모리 모델을 직접 신경쓰지 않도록 한다.

재배치 reordering : 특정 작업이 지연되거나 다른 순서로 실행되는 것처럼 보이는 문제

미리 발생(happens-before) 현상 규칙

안전한 공개

JMM은 강력한 미리 발생 규칙에 따라 동작함에도, 안전한 공개 기법을 사용하는 이유

초기화 안전성

초기화 안전성을 보장한다는 의미는 올바르게 생성된 불변 객체를 어떤 방법으로건 (데이터 경쟁이 발생하는 방법이더라도), 여러 스레드에서 별다른 동기화 구문 없이 안전하게 사용할 수 있다는 의미이다.