JavaMemoryModel: New approach to defining the Java Memory Model

From: Bill Pugh (
Date: Fri Jul 19 2002 - 20:16:36 EDT

Jeremy and I have written up a very rough draft of a new approach to
specifying the Java Memory Model:

The write up is rough, but complete enough to ask for (forgiving) feedback on.

We have changed the way we describe the semantics. Rather than
talking about overwritten, previous and allWrite sets, we talk about
execution traces and happens-before edges and paths. It is really
just two ways of talking about the same thing.

We made the change because I think it will be easier for others to
understand. If people don't like the new way of talking about the
memory model, we can easily go back to talking about allWrites,
overwritten and previous.

The rough draft doesn't include anything about final fields, and
gives purely sequentially consistent semantics for volatiles. It also
doesn't really address causal loops.

The writeup is only 7 pages long, describes the semantics, gives an
example, and proofs that correctly synchronized programs have
sequentially consistent semantics and that standard reordering
transformations are legal.

Please try to take a quick look at it and provide feedback. This is
still rough enough that we would be willing to consider substantial
changes. However, at the moment we are pretty happy with this new


JavaMemoryModel mailing list -

This archive was generated by hypermail 2b29 : Thu Oct 13 2005 - 07:00:40 EDT