垃圾收集器与内存分配策略探究.docx

垃圾收集器与内存分配策略一、如何判断对象是否还在存活引用计数法:?主流的Java虚拟机没有使用这种方法管理内存,因为它很难解决循环依赖??可达性分析:?通过一系列的称为”GC ?Roots“的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有与任何引用链相连时,则证明该对象是不可用的。??作为GC Roots的对象包括以下几种:虚拟机栈中引用的对象、方法区中类静态属性引用的对象、方法区中常量引用的对象以及本地方法栈中JNI引用的对象。二、引用:定义:?如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。??分类:??强引用:?代码之中普遍存在的,如Object obj = new Object(), 只要强引用还在, GC就永远不会回收该内容。??软引用:?描述有用但非必须的对象。对于软引用关联着的对象,在系统将要抛出内存异常之前,会将这些对象列进回收范围进行二次回收。如果这次回收还没有足够的内存,才会抛出异常。(SoftReference)??弱引用:?弱引用也用来描述非必须的对象。被若引用关联的对象只能活到下次垃圾回收发生之前。当垃圾收集器工作时,无论当前内存是否足够,都会回收掉只被弱引用关联的对象。??虚引用:?又称为幽灵引用或者幻影引用。一个对象是否有虚引用的存在,丝毫不会

文档评论(0)

1亿VIP精品文档

相关文档