![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM学习
吐痰高手
SB一个
展开
-
Safepoint和OopMap
参考资料: https://www.iteye.com/blog/rednaxelafx-1044951 《深入理解Java虚拟机(周志明)》 1. 预备知识: 1.1 虚拟机栈的内存模型 略 1.2 GCRoots GC Root是可达性分析的根节点对象 GC Root 有如下几种: 虚拟机栈(栈帧中的本地变量表)中引用的对象, 例如局部变量指向的对象等 方法区中类静态属性指向的对象 方法区中常量引用的对象 JNI引用的对象 虚拟机内部引用的对象 被锁持有的对象 反映Java虚拟机内部情况的JM.原创 2020-06-25 23:38:03 · 405 阅读 · 0 评论 -
JVM指令学习
预备知识: class文件结构(todo) 操作数栈(todo) 局部变量表(todo) 本文粗略给JVM指令进行分类 关于指令集的官方文档(JAVA8) 关于指令集的详细使用方式请参阅: oracle官方指令集详细文档(JAVA8) 特别注意: 局部变表可以看做是一个数组, 每一个元素是 32bit JAVA虚拟机的指令由1个字节长度的、代表着某种特定含义的数字(操作码)以及跟随其后的零至多个代表此操作所需的参数(操作数)构成!!!~!! 操作数有两种: 隐式的操作数,在操作数栈中的,原创 2020-06-09 14:29:59 · 393 阅读 · 0 评论 -
JVM PC(程序计数器 program counter)
The pc Register 官方原文: The Java Virtual Machine can support many threads of execution at once (JLS §17). Each Java Virtual Machine thread has its own pc (program counter) register. At any point, each Java Virtual Machine thread is executing the code of a .原创 2020-05-25 19:28:13 · 338 阅读 · 0 评论 -
java中的volatile详解
参考资料: 《深入理解java虚拟机》(周志明) java中的volatile详解1. JAVA为什么要有一个volatile修饰符?2. 代码不符合预期的问题2.1 工作内存带来的`可见性`问题2.1.1 jvm内存模型2.1.2 主内存和工作内存的区分带来了什么问题?2.2 各种优化策略带来的`指令重排`问题2.2.1 什么是指令重排序2.2.2 指令重排序带来了什么问题?3. 怎么解决上面的问题?3.1 解决可见性的问题3.2 解决指令重排序带来的问题4. 为什么`volatile`能解决 可见性和.原创 2020-05-18 00:13:12 · 409 阅读 · 0 评论 -
JVM学习1: Happens-Before 先行发生原则
Happens-Before 先行发生原则 参考资料: 《深入理解Java虚拟机》(周志明) 1. Happens-Before先行发生原则的是啥? 官方定义[https://docs.oracle.com/javase/specs/jls/se8/html/jls-17.html#jls-17.4.5] 具象的描述一下什么叫先行发生原则Happens-Before 如果有两个操作A,B A 在时间点 T1 执行 B 在时间点 T2 执行, 且 T2 在 T1 之后 若 A 的操作,能被 B 操作观测到原创 2020-05-16 23:04:06 · 309 阅读 · 0 评论