理解Java垃圾回收算法

2017-12-05  本文已影响0人  简书汪

内存区域

Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序计数器,Java虚拟机栈,本地方法栈,Java堆,方法区。

image
具体参考:Java内存区域与内存溢出

常用的垃圾回收算法:

Java中使用的垃圾回收算法:

  1. 引用计数法:缺点是无法处理循环引用问题
  2. 标记-清除法:标记所有从根结点开始的可达对象,缺点是会造成内存空 间不连续,不连续的内存空间的工作效率低于连续的内存空间,不容易分配内存
  3. 复制算法:将内存空间分成两块,每次将正在使用的内存中存活对象复制到未使用的内存块中,之后清除正在使用的内存块。算法效率高,但是代价是系统内存折半。适用于新生代(存活对象少,垃圾对象多)
  4. 标记-压缩算法:标记-清除的改进,清除未标记的对象时还将所有的存活对象压缩到内存的一端,之后,清理边界所有空间既避免碎片产生,又不需要两块同样大小的内存快,性价比高。适用于老年代。
  5. 分代
    详细内容参考: 深入理解java垃圾回收算法
    参考:深入理解 Java 垃圾回收机制
上一篇 下一篇

猜你喜欢

热点阅读