Search code examples
javamultithreadingjvmjava-memory-modelnon-volatile

Does JVM guarantee to cache not volatile variable?


Does JVM guarantee to cache not volatile variable ?

Can a programer depend upon on JVM to always cache non-volatile variables locally for each thread.

Or JVM may or may not do this, thus a programer should not depend upon JVM for this.

Thanks for the answers in advance.


Solution

  • No. The JVM doesn't guarantee "caching" of non-volatile fields. What implementations of JVM guarantee is how volatile fields should behave. Caching of fields is non-standard (unspecified) and can vary from JVM to JVM implementation. So, you shouldn't really rely on it (even if find out, by some way that some data is being cached by a thread)