![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java虚拟机
从入门到精通
星星都没我亮
杭电计科小硕一枚
展开
-
JVM之垃圾回收和调优思路
文章目录GC的基础知识1.什么是垃圾2.如何定位(找到)垃圾3.常见的垃圾回收算法4.JVM内存分代模型(用于分代垃圾回收算法)5.常见的垃圾回收器常见垃圾回收器组合参数设定:(1.8)JVM调优第一步,了解JVM常用命令行参数PS GC日志详解调优前的基础概念:什么是调优?调优,从规划开始优化环境解决JVM运行中的问题一个案例理解常用工具jconsole远程连接jvisualvm远程连接jprofiler (收费)arthas在线排查工具GC算法的基础概念CMSCMS的问题CMS日志分析G1G1日志详解案原创 2020-11-03 16:16:30 · 1023 阅读 · 1 评论 -
JVM运行时数据区和指令集
Runtime Data Area and Instruction Set jvms 2.4 2.5 指令集分类 基于寄存器的指令集 基于栈的指令集 Hotspot中的Local Variable Table = JVM中的寄存器 Runtime Data Area PC 程序计数器 存放指令位置 虚拟机的运行,类似于这样的循环: while( not end ) { 取PC中的位置,找到对应位置的指令; 执行该指令; PC ++; } JVM Stack Frame - 每个方法对应原创 2020-11-03 16:08:33 · 257 阅读 · 0 评论 -
JVM之关于对象大小的实验
使用JavaAgent测试Object的大小 对象大小(64位机) 观察虚拟机配置 java -XX:+PrintCommandLineFlags -version 普通对象 对象头:markword 8 ClassPointer指针:-XX:+UseCompressedClassPointers 为4字节 不开启为8字节 实例数据 引用类型:-XX:+UseCompressedOops 为4字节 不开启为8字节 Oops Ordinary Object Pointers Padding对齐,8的原创 2020-11-03 16:00:21 · 201 阅读 · 0 评论 -
硬件层数据一致性、关键字synchronized和volatile的底层实现细节
文章目录硬件层数据一致性乱序问题如何保证特定情况下不乱序 硬件层数据一致性 协议很多 intel 用MESI https://www.cnblogs.com/z00377750/p/9180644.html 现代CPU的数据一致性实现 = 缓存锁(MESI …) + 总线锁 intel cpu x86 用的是MESI缓存一致性协议 modify exclusive shared invalid 缓存的四种状态,CPU之间会相互通知缓存的状态 读取缓存以cache line为基本单位,目前64bytes 位于原创 2020-11-03 15:43:47 · 976 阅读 · 0 评论 -
JVM之类的加载
加载过程 Loading 双亲委派,主要出于安全来考虑 LazyLoading 五种情况 –new getstatic putstatic invokestatic指令,访问final变量除外 –java.lang.reflect对类进行反射调用时 –初始化子类的时候,父类首先初始化 –虚拟机启动时,被执行的主类必须初始化 –动态语言支持java.lang.invoke.MethodHandle解析的结果为REF_getstatic REF_putstatic REF_invokesta..原创 2020-11-03 15:30:55 · 705 阅读 · 0 评论 -
JVM之字节码文件浅析
JVM 1:JVM基础知识 什么是JVM 常见的JVM 2:ClassFileFormat class文件标识4个字节,cafebabe 最小版本 最大版本 常量池 当前类 父类 访问限制修饰符 接口数 属性 方法 额外属性 3:类编译-加载-初始化 hashcode 锁的信息(2位 四种组合) GC信息(年龄) 如果是数组,数组的长度 4:JMM new Cat() pointer -> Cat.class 寻找方法的信息 5:对象 1:句柄池 (指针池)间接指针,节省内存 2:直接指针,访问速原创 2020-11-03 15:26:34 · 94 阅读 · 0 评论