java垃圾回收

  jvm 虚拟机栈,每一个线程运行时都有一个线程栈,每个线程栈保存了线程运行时候变量值信息。

  当线程访问某一个对象的值的时候,首先通过对象的引用栈找到对应的堆内存的变量的值,然后把堆内存变量的具体值load到线程本地内存中,建立一个变量副本,之后线程就不再和对象在堆内存变量值有任何关系,而是直接修改副本变量的值,在修改完后的某个时刻(线程退出之前),自动将线程变量副本的值写到对象在堆中变量。这样堆中的对象的值就产生变化了。

下面一幅图描述这写交互

 

java volatile1

 

 

Java 关键字 volatile

用volatile关键字修饰的变量,线程在每次使用的时候,都会都变量修改后的最新值。

 

参考链接:http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html

http://www.ibm.com/developerworks/cn/java/j-jtp06197.html

posted @   panie2015  阅读(142)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示