10 2021 档案
摘要:HotSpot的算法细节实现 一、根节点枚举 迄今为止,所有收集器在根节点枚举这一步骤时都是必须暂停用户线程的,现在可达性分析算法耗时最长的查找引用链的过程已经可以和用户线程一起并发,但是根节点枚举始终还是必须在一个能保障一致性快照中才得以进行。 由于目前Java虚拟机使用的都是准确式垃圾收集,所有
阅读全文
摘要:内存垃圾收集算法 这里的内存主要指的堆和方法区的内存。 一、如何判断对象是否死亡 引用计数算法 在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1,当引用失效时,计数器就减1,任何时刻计数器为零的对象就是不可能再被使用的。比较著名的应用案例有微软com技术、python语言等,但是在
阅读全文
摘要:HotSpot虚拟机在java堆中对象的分配、布局和访问过程 一、对象的创建 当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那么必须执行相应的类加载过程。 在类加载检查
阅读全文
摘要:Java虚拟机运行时的内存数据区域可分为: 方法区 堆 虚拟机栈 本地方法栈 程序计数器 其中堆和方法区由线程共享;虚拟机栈、本地方法区、程序计数器线程隔离的,即每个线程都有。 下面简单描述下上述的各个分区的职责和功能 一、程序计数器 程序计数器是一块较小的内存空间,在java虚拟机的概念模型里面,
阅读全文