![](https://img-blog.csdnimg.cn/20210102174846207.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
JVM
文章平均质量分 73
j
lucky_白杨
且行且珍惜
展开
-
Java中的String比较与内存分析
文章目录问题1问题2问题3问题4问题1问: 如下代码,一共创建了几个对象,其比较结果是?String str1 = "ab";String str2 = "a"+"b";System.out.println(str1==str2);答: 1个对象;结果为true。分析:该段代码被编译成class文件后,反编译之后如下:String str1 = "ab";String str2 = "ab";System.out.println(str1 == str2);"ab"字面量被放入到原创 2022-04-07 19:01:08 · 1075 阅读 · 0 评论 -
Java对象利用finalize()方法逃避GC回收进行存活自救
文章目录JVM判定对象是否存活对象利用finalize()逃脱内存回收例子JVM判定对象是否存活JVM判定对象是否死亡,是通过可达性分析算法来发现对象是否还存在与GC Root相连的引用链,如果没有相连的引用链,则进行第一次标记并且判断对象是否有覆盖finalize()方法或者是否调用过finalize()方法,如果没有覆盖或者没有调用过finalize()方法,那么JVM将判定对象已经死亡并...原创 2019-08-15 00:52:21 · 4320 阅读 · 1 评论 -
JVM 垃圾收集算法思想
目录标记-清除算法复制算法标记-整理算法分代收集算法标记-清除算法标记-清除(Mark-Sweep)算法是最基础的收集算法,算法分“标记”与“清除”两个阶段:首先标记处所有需要回收的对象,标记过程通过可达性算法确定对象是否死亡,死亡则标记,标记完所有死亡对象之后统一进行回收。不足:效率低空间问题,标记清除后出现不连续内存碎片,在分配大对象时,无法找到足够的内存不得不再次触发GC动作。...原创 2019-08-16 01:34:25 · 120 阅读 · 1 评论 -
JVM判定对象是否存活
文章目录确定对象是否存活算法1、引用技术算法2、可达性分析算法JDK引用确定对象是否存活算法1、引用技术算法给对象中添加一个引用计数器,每当一个地方引用它时,计数器值就+1;当引用失效时,计数器值就-1;任何时刻计数器为0的对象就是不可能再被使用的。优点:实现简单,判定效率高缺点:很难解决对象相互循环引用问题public class ReferenceCountingGc{ p...原创 2019-08-13 02:19:54 · 216 阅读 · 1 评论