jvm 虚拟机栈,每一个线程运行时都有一个线程栈,每个线程栈保存了线程运行时候变量值信息。
当线程访问某一个对象的值的时候,首先通过对象的引用栈找到对应的堆内存的变量的值,然后把堆内存变量的具体值load到线程本地内存中,建立一个变量副本,之后线程就不再和对象在堆内存变量值有任何关系,而是直接修改副本变量的值,在修改完后的某个时刻(线程退出之前),自动将线程变量副本的值写到对象在堆中变量。这样堆中的对象的值就产生变化了。
下面一幅图描述这写交互
Java 关键字 volatile
用volatile关键字修饰的变量,线程在每次使用的时候,都会都变量修改后的最新值。
http://www.ibm.com/developerworks/cn/java/j-jtp06197.html
作者:panie
标签:副本,java,变量,对象,回收,线程,内存,垃圾 From: https://blog.51cto.com/u_15812342/5723968