![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
java 虚拟机
xyz
好记性不如烂笔头,DevOps这个Flag一定要立稳呀!
展开
-
JVM 运行时数据区-JVM五大区域,GC垃圾回收算法
五大区域:1)程序计数器(Program Counter Register):当前线程所执行的字节码的行号指示器,字节码解析器的工作是通过改变这个计数器的值,来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能,都需要依赖这个计数器来完成;(私有)2)Java 虚拟机栈(栈)(Java Virtual Machine Stacks):用于存储局部变量表、操作数栈、动态链接、方法出口等信息;(私有)3)本地方法栈(Native Method Stack):与虚拟...转载 2021-07-27 16:52:58 · 160 阅读 · 0 评论 -
jvm 验证long和double类型的数据占据2个slot
JVM在编译代码的时候,通过操作码可以看到double类型的数据在局部变量表里将占据2个slot取数据的时候,也是有原语:dload_slot_index来确定从哪个索引位置开始取,取多少原创 2021-07-26 15:49:34 · 199 阅读 · 0 评论 -
多线程共同操初始化一个类,clinit方法会对静态资源加锁
当连个线程里的调用同一个类的创建实例,jvm的类加载器会保证静态资源只被加载一次(使用同一个类加载器的前提下),如果static代码块里写入一个死循环,则后一个被调用的线程会进入无限等待阶段public class Test{static{int i=0;while(true){Thread.sleep(1000); sout(i++);}}p...翻译 2021-07-18 11:22:27 · 224 阅读 · 0 评论 -
JVM的双亲委派机制
要了解双亲委派机制得先了解个概念:类加载器:“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块成为“类加载器”。通俗的讲,虚拟机是根据类的全限定名来加载类的,那么有个问题,如果同时存在两个或多个全限定名完全一致的情况下。该如何选择加载哪个类。这就是双亲委派机制要做的工作。在这里强加个知识点:比较两个类是否“相等”,只有在这两个类是由同一个类加载器加载的前提下才有真正的意义,否则,即使这两转载 2021-07-17 12:45:36 · 109 阅读 · 0 评论 -
JVM生命周期
原创 2021-07-16 09:46:21 · 62 阅读 · 0 评论 -
JVM发展历程
感谢尚硅谷的老师们的辛勤付出原创 2021-07-16 09:40:39 · 46 阅读 · 0 评论