![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 84
打破沉默
爱生活,爱Hello World!
个人博客https://www.cocoivan.com/
展开
-
Java运行时数据区和常用指令
从一道面试题谈起 第一个截图代码运行结果是8 第二个截图代码运行结果是9 jvms 2.4 2.5 指令集分类 基于寄存器的指令集 基于栈的指令集 Hotspot中的Local Variable Table = JVM中的寄存器 Runtime Data Area PC 程序计数器 存放指令位置 虚拟机的运行,类似于这样的循环: while( not end ) { 取PC中的位置,找到对应位置的指令; 执行该指令; PC ++; } JVM Stack Frame - 每个方原创 2021-05-27 20:59:38 · 104 阅读 · 0 评论 -
对象在内存中的存储布局
可使用JavaAgent测试Object的大小 对象的创建过程 对象大小(64位机) 观察虚拟机配置 java -XX:+PrintCommandLineFlags -version 普通对象 对象头:markword 8字节 ClassPointer指针:-XX:+UseCompressedClassPointers 为4字节 不开启为8字节 实例数据 引用类型:-XX:+UseCompressedOops 为4字节 不开启为8字节 Padding对齐,8的倍数 数组对象 .原创 2021-05-27 20:54:55 · 79 阅读 · 0 评论 -
JMM(Java内存模型)
Java并发内存模型 hanppens-before原则 计算机缓存模型 缓存行及伪共享 基于计算机的缓存模型,计算机认为相邻的数据大概率在计算时一起被用到,为了提高效率,CPU从L3读取数据到工作内存(L2)时,默认读取64bytes的数据,会将多个数据值读到工作内存,由此引发缓存一致性问题(两个CPU均读取相同的64kb数据,其中一个CPU修改x数据,另一个CPU修改y数据,两个CPU的工作内存数据需要同步)。 解决缓存一致性问题的方案,现在CPU的数据一致性实现=缓存锁+总线锁 总线锁原创 2021-05-16 16:16:10 · 101 阅读 · 0 评论 -
JVM入门(Class格式及类加载)
java执行流程 从图中可以看出,java文件先会被编译成.class字节码文件,由jvm的类加载器加载到内存中,通过字节码解释器或即时编译器编译成汇编语言在操作系统上执行 Class File Format 整个class其实就是二进制的字节流,供jvm解析 整个class文件的构成,基本可以分为几个部分: magic—魔数(不同类型后缀的文件,文件前缀都不一样,称为魔数,.class文件的魔数前缀是CAFE BABE,占4个字节) minor_version:jvm小版本号 major_vers原创 2021-05-11 14:50:40 · 164 阅读 · 0 评论