The Java memory model described in Chapter 17 of the Java Language Specific
ation gives constraints on how threads interact through memory. This chapte
r is hard to interpret and poorly understood; it imposes constraints that p
rohibit common compiler optimizations and are expensive to implement on exi
sting hardware. Most JVMs violate the constraints of the existing Java memo
ry model; conforming to the existing specification would impose significant
performance penalties.
In addition, programming idioms used by some programmers and used within Su
n's Java Development Kit is not guaranteed to be valid according to the exi
sting Java memory model. Furthermore, implementing Java on a shared-memory
multiprocessor that implements a weak memory model poses some implementatio
n challenges not previously considered. Copyright (C) 2000 John Wiley & Son
s, Ltd.