java垃圾回收
jvm 虚拟机栈,每一个线程运行时都有一个线程栈,每个线程栈保存了线程运行时候变量值信息。
当线程访问某一个对象的值的时候,首先通过对象的引用栈找到对应的堆内存的变量的值,然后把堆内存变量的具体值load到线程本地内存中,建立一个变量副本,之后线程就不再和对象在堆内存变量值有任何关系,而是直接修改副本变量的值,在修改完后的某个时刻(线程退出之前),自动将线程变量副本的值写到对象在堆中变量。这样堆中的对象的值就产生变化了。
下面一幅图描述这写交互
Java 关键字 volatile
用volatile关键字修饰的变量,线程在每次使用的时候,都会都变量修改后的最新值。
参考链接:http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html
http://www.ibm.com/developerworks/cn/java/j-jtp06197.html
作者:panie
出处:http://www.cnblogs.com/panie2015/
如果您希望与我交流互动,欢迎加我微信
本文内容为作者辛苦整理书写,欢迎转载,但请保留文章出处
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?