JMM is often (incorrectly) treated as Java Memory Management, which it's NOT. It's NOT about Eden, Survivors, GC, heap memory and all that. It's about Memory Consistency, or making things visible to threads, and making things understandable for humans. I'll tell you what is memory model, why should it be consistent, will explain memory barriers, volatile, final, synchronization and from there will delve in lock-free, wait-free and prepping this with examples all along.
Lecture language: English