- 博客(3)
- 收藏
- 关注
原创 Java中都有哪些引用类型?
无论是通过引用计数算法判断对象的引用数量,还是通过可达性分析算法判断对象是否引用链可达,判定对象是否存活都和“引用”离不开关系。如今,将引用分为强引用、软引用、弱引用和虚引用4种,强度依次减弱。1、强引用:发生GC的时候不会被回收。2、软引用:有用但不是必须的对象,在发生内存溢出之前会被回收。3、弱引用:有用但不是必须的对象,在下一次GC的时候会被回收。4、虚引用:无法通过虚引用获得对象,用PhantomReference实现虚引用,虚引用的用途是在GC时返回一个通知。...
2020-06-20 22:50:00
1084
原创 对象已死?
垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象哪些已经死亡,哪些还存活。方法:引用计数算法(Reference Counting)和可达性分析算法(Reachability Analysis)。引用计数算法:在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。引用计数算法虽然占用了一些额外的内存空间来进行计数,但它的原理简单,判定效率也很高。但是,在Java领域,至少主流的Java虚拟机里面都没有选用引
2020-05-25 01:12:42
166
原创 JVM的内存区域
JVM中内存分为若干部分:堆、方法区、虚拟机栈、本地方法栈、程序计数器。堆:Java堆是虚拟机所管理的内存中的最大的一块,是被所有线程共享的一块内存区域,在虚拟机启动时创建,此内存区域的唯一目的是存放对象实例。Java堆是垃圾收集器管理的内存区域,由于现代垃圾收集器大部分都是基于分代收集理论设计的,所以Java堆还可以分为新生代和老年代。如果从分配内存的角度看,所有线程共享的Java堆中可以划分出多个线程私有的分配缓冲区,以提升对象分配时的效率。Java堆可以处于物理上不连续的内存空间中,但在逻辑上应该
2020-05-22 01:13:55
108
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人