![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 80
秃头小码
这个作者很懒,什么都没留下…
展开
-
volatile型变量
线程的工作内存中保存这被该线程使用的变量的主内存副本,线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的数据,比如某个线程修改一个对象的某个属性,需要将属性值从主内存中读入(read字节码指令)工作内存再进行修改,最后写回主内存(write字节码指令),若不写回主内存,修改的值对于其他线程是不可见的,“可见性”是指当一个线程修改了这个变量的值,新值对于其他线程来说可以立即得知。不同的线程之间也无法直接访问对方的工作内存中的变量,线程间的变量值的传递均需要通过主内存来完成。原创 2024-05-04 10:17:07 · 842 阅读 · 0 评论 -
浅谈JVM字节码和执行引擎
与平台无关性”的理想最终只能实现在操作系统以上的应用层:Oracle公司以及其他虚拟机发行商发布过许多可以运行在各种不同硬件平台和操作系统上的JVM,这些JVM都可以载入和执行同一种平台无关的字节码,从而实现了程序的“一次编写,到处运行”。Java程序最初都是通过解释器进行解释执行的,当虚拟机发现某个方法或者代码块的运行特别频繁时,就会把这些代码认定为“热点代码”,为提高热点代码的执行效率,在运行时虚拟机将会把这些代码编译为本地机器码,运行时完成这个任务的后端编译器被称为即时编译器。原创 2024-04-25 09:09:49 · 413 阅读 · 1 评论 -
浅谈HotSpot根节点枚举
对于这个问题,最熟为人知的算法是引用计数法—— 为对象添加一个引用计数器,每有一次引用,就使其计数器加一,当引用失效时,计数器就减一;我们将一个对象称为一个节点,该算法的基本思路就是把一些节点组成根节点(GC root)集合,从这些节点开始,根据引用关系搜索得到一个引用链(简单地说,A对象的成员属性是B,B对象的成员属性是C,则可以得到一个引用链 A->B->C)。枚举是一种类,每个数组也属于一个反映为类对象的类,拥有相同元素类型和维度的数组是属于同一个Class类的类对象。若是逐个检查必然非常耗时。原创 2024-04-21 14:48:29 · 351 阅读 · 1 评论