Java虚拟机系列(二):垃圾收集器与内存分配策略
2016-08-27 21:05
246 查看
垃圾收集器与内存分配策略
哪些内存需要回收?什么时候回收?
如何回收?
对象已死吗
引用计数算法(不使用)
给对象添加引用计数器,每当有一个地方引用它时,计数器加1,引用失效时就减1,计数为0的是不再引用的。缺点是解决不了对象循环引用的问题可达性分析算法
基本思路:通过一系列的“GC Roots”对象作为起始点,从节点向下搜索,搜索走过的路径称为引用链。当对象到Gc root没有任何引用链相连时,则证明该对象不可用java中,需要作为GC Root的对象包括:
- 虚拟机栈(栈帧中的本地变量表)中引用的对象
- 方法区中类静态属性引用的属性
- 方法区中常量引用的对象
- 本地方法栈中jni引用的对象
再谈引用
如果reference类型的数据存储的数值代表另一个内存的起始地址,则称代表一个引用。引用分为强引用,软引用,弱引用,虚引用。引用强度以此减弱
强引用:永远不会回收
软引用:快内存溢出时,列入回收范围
弱引用:非必需对象,在下一次垃圾收集发生时,无论内存是否足够,都会回收掉。
虚引用:对生存时间无影响。只是在销毁时收到一个通知
生存还是死亡
没有引用的对象也有一次机会拯救自己。在finalize(),只要重新与引用链上的任何一个对象建立关联即可。相关文章推荐
- JVM系列2:垃圾收集器与内存分配策略
- Java虚拟机(二)-垃圾收集器与内存分配策略
- Java虚拟机学习 - 垃圾收集器
- Java虚拟机学习 - 垃圾收集器 (4)
- Java虚拟机垃圾回收(二) 垃圾回收算法:标记-清除算法 复制算法 标记-整理算法 分代收集算法 火车算法
- .Net Discovery 系列之四--深入理解.Net垃圾收集机制(下)
- Java虚拟机垃圾收集器
- 深入理解java虚拟机----->垃圾收集器与内存分配策略(上)
- 《深入理解java虚拟机》Java虚拟机垃圾收集器
- JVM系列(二)--垃圾收集
- Java虚拟机深入学习之二: Java虚拟机的垃圾收集器 .
- 《深入理解java虚拟机》学习笔记4——Java虚拟机垃圾收集器
- Java虚拟机详解05----垃圾收集器及GC参数
- Java虚拟机学习 - 垃圾收集器
- Java虚拟机详解05----垃圾收集器及GC参数
- jvm系列(三):java GC算法 垃圾收集器
- JVM系列(5)-HotSpot 2 垃圾收集器
- 《java虚拟机》----垃圾收集、内存分配
- JVM学习笔记2 垃圾收集器与内存分配策略
- Java虚拟机学习 - 垃圾收集算法