![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
来醉一场
这个作者很懒,什么都没留下…
展开
-
如何判断对象是否已死
如何确定对象是“活着”还是已经“死去”? 一、判断对象存活的算法 1、引用计数法(未使用) 判定条件: 给对象添加一个引用计数器,每当有一个地方引用它时,计数器的值加1;当引用失效时,计数器值减1;任何时刻计数器为0的对象就是不可能再被使用的。 特点: 实现简单,判定效率也很高,在大部分情况下它都是一个不错的算法。 很难解决对象之间循环引用的问题,主流 JVM 都没有使用。 2、可达性分析...原创 2019-07-25 08:31:32 · 241 阅读 · 0 评论 -
HotSpot 虚拟机对象探秘
一、对象的创建过程 当虚拟机遇到一条new 指令时: 检查 首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符合引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程 分配内存 在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可确定,为对象分配空间的任务等同于把一块确定大小的内存从Java...原创 2019-07-31 09:20:05 · 88 阅读 · 0 评论 -
垃圾收集算法
一、标记——清除算法 实现: 算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。 特点: 是最基础的收集算法 缺点: 效率问题,标记和清除两个过程的效率都不高 空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次收集动作。 ...原创 2019-07-31 09:20:39 · 89 阅读 · 0 评论 -
HotSpot 垃圾收集算法的实现
根据对象存活判定算法和垃圾收集算法,HotSpot 虚拟机上实现这些算法时,对算法的执行效率有严格的考量。 一、枚举根节点 实现: 由于目前的主流 Java 虚拟机使用的都是准确式 GC,所以当执行系统停顿下来后,并不需要一个不漏地检查完所有执行上下文和全局的引用位置,虚拟机应当是有办法直接得知哪些地方存放着对象引用。 在 HotSpot 的实现中,是使用一组称为 OopMap 的数据结构来达...原创 2019-07-31 09:21:10 · 150 阅读 · 0 评论 -
圾收集器和内存分配与回收策略
一、垃圾收集器 常用垃圾收集器图示: 图上半部分表示 Young generation 垃圾收集器,下半部分表示 Tenured generation 垃圾收集器。连线表示可以同时使用 1. Serial 收集器 特点: 新生代收集器 单线程 它进行垃圾收集时,必须暂停其他所有工作线程(Stop The World) 对于单 CPU 来说和其它收集器来比 --> 简单而...原创 2019-07-31 09:24:10 · 147 阅读 · 0 评论 -
Java内存区域与内存溢出异常
Java 虚拟机所管理的内存包括以下几个运行时数据区域 一、程序计数器 特点: 线程私有 当前线程的行号指示器 唯一一个在Java 虚拟机规范中没有规定任何OOM情况的区域 二、Java 虚拟机栈 特点: 线程私有 存放各种基本数据类型(boolean、byte、char、short、int、float、long、double)、对象引用(reference类型) 使用-Xss 参数减少栈内...原创 2019-07-23 09:09:39 · 93 阅读 · 0 评论