Fixing the Java memory model

With the recent announcement of JDK Enhancement Project (JEP) 188, now seems like a good time to brush up on what you know about the Java memory model.

Authored by Doug Lea, JEP 188 proposes the first major update to the Java memory model since the release of JDK 5. While the focus of the proposed update would be improving Java concurrency support for multicore systems, the JEP throws a bone to JVM language enthusiasts, suggesting that certain specifications could be reformulated for broader JVM coverage. Implementation guidance, testing support, and increased tool support are also features of JEP 188.

If you're curious to know what's wrong with the current JMM, Doug Lea points to "Java memory model examples: Good, bad, and ugly" (Aspinall and Ševčík, 2007). For a more in-depth (pre-JDK 5) exploration of the Java memory model, see Brian Goetz's "Fixing the Java memory model, Part 1" (IBM developerWorks, 2004). And for a recent take on where the JMM succeeds and fails in modern Java development, see Eva Andreasson's JVM performance optimization series on JavaWorld.