1. 7.3 1.垃圾回收思想historical

    1. 引用计数法 每个对象都有一个计数器,有变量引用时+1,引用失效则-1。当计数器为0的时候则对其进行回收 优点:简单高效 缺点:无法解决循环引用的问题 循环引用是指A对象引用B对象,B对象又引用A对象,但是A,B对象已不被任何其他对象引用 2. 可达性分析 从GC Root出发,通过引用关系遍历

  2. 7.7 2.垃圾回收算法historical

    1. 标记清除 垃圾回收分成两个阶段 - 标记: 从GC Root出发,标记所有可达的对象。未被标记的就是垃圾对象 - 清除: 清除所有未被标记的对象 1.1. 特点 - 会产生内存碎片(不连续的内存空间), 需要分配较大的对象时,无法找到足够的连续内存空间。 2. 标记整理 分标记和整理阶段。 -

  3. 7.10 3.垃圾回收器historical

    1. JVM实际采用的垃圾回收算法:分代收集 根据对象的存活时间把内存分成新生代和老年代 - 新生代的特点是每次回收只有少量对象存活,因此采用改进的复制算法 改进的复制算法把内存空间分为Eden和Survivor区(8:1:1),只有10%的空间被浪费 - 老年代的特点是有大量对象存活,采用标记清除

  4. 7.13 4.jvm参数选用具体的垃圾回收器historical

    1. 新生代与老年代的匹配 2. JVM参数 -XX:+UseSerialGC 新生代使用Serial(复制算法),老年代使用Serial Old(标记整理) -XX:+UseParNewGC 新生代使用ParNew(复制算法),老年代使用Serial Old(标记整理) -XX:UseParall

  5. 7.15 垃圾回收historical

    思想- 垃圾回收算法- 具体的垃圾回收器- jvm参数选用具体的垃圾回收器 1. 核心问题 GC是在什么时候,对什么东西,做了什么事情? 2. GC是在什么时候 当新生代空间(Eden+Fron)满的时候发生MinorGC,当老年代空间不足的时候发生MajorGC(一般也伴随着MinorGC),当S

  6. 7.17 引用historical

    1. 强软弱虚引用 1.1. 强 最普遍的引用。一个对象具有强引用,那么绝不会被回收。 - 例子 1.2. 软 内存足够的时候不会被回收,不足的时候会被回收。 使用SoftReference实现,一般用于缓存 - 例子 1.3. 弱 不管内存是否充足,一旦发生gc就会被回收 1.4. 虚 监控GC回