This document discusses issues with the existing specification of Java's memory model and proposes a new semantics. The existing specification prohibits compiler optimizations and omits necessary guarantees for safe execution of multithreaded code. The paper reviews these issues and proposes allowing more aggressive compiler optimizations while addressing safety and multithreading issues through a new memory model based on lazy release consistency.