随笔分类 - JVM
摘要:垃圾收集 判断对象为垃圾对象 引用计数法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就+1;当引用失效时,计数器值就-1;任何时刻计数器为0的对象就是不能再被使用的垃圾对象。 引用计数算法的实现简单,判定效率高。在大部分情况下它都是一个不错的算法。但是,至少主流的Java虚拟机里面
阅读全文
摘要:整体描述 前面对运行时数据区描述了很多,其实重点存储数据的是堆和方法区(非堆),所以内存的设计也着重从 这两方面展开(注意这两块区域都是线程共享的)。对于虚拟机栈,本地方法栈,程序计数器都是线程私有的。 (1)一块是非堆区,一块是堆区 (2)堆区分为两大块:一个是Old区,一个是Young区 (3)
阅读全文
摘要:运行时数据区 官网:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.5 The Java Virtual Machine defines various run-time data areas that ar
阅读全文
摘要:类加载机制 官网:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-5.html Loading ClassLoader 双亲委派机制 (1)检查某个类是否已经加载 自底向上,从Custom ClassLoader到BootStrap C
阅读全文
摘要:什么是JVM 流程图(代表一次编译 到处运行) Java虚拟机与物理机对比 Class文件类比输入设备 CPU指令集类比输出设备 JVM类比存储器、控制器、运算器等 JVM products 最常用的目前是HotSpot,可以通过java -version命令查看 Oracle:HotSpot、JR
阅读全文
摘要:jps java process status jps l 主 类 全 名 jps m 运 行 传 入 主 类 的 jps v 虚 拟 机 参 数 jstat 类 加 载 , 内 存 , 垃 圾 收 集 , jit 编 译 信 息 、 https://docs.oracle.com/javase/8
阅读全文
摘要:字节码与数据类型 在虚拟机的指令集中,大多数的指令包含了其操作所对应的 数据类型信息 iLoad:从局部变量表中加载int型数据到操作数栈 大多数指令包含类型信息 类型多,指令少 加载与存储指令 加载和存储指令用于将数据在栈帧中的局部变量表和操作数栈直接来回传输 将局部变量表加载到操作数栈: ilo
阅读全文
摘要:对象创建 • 给对象分配内存 • 线程安全性问题 • 初始化对象 • 执行构造方法 给对象分配内存 指针碰撞 假设Java堆中内存是绝对规整的,所有用过的内存都放在一边,空闲的内存放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指针向空闲空间那边挪动一段与对象大小相等的距离
阅读全文