美文网首页
深入理解JVM(第三章笔记)

深入理解JVM(第三章笔记)

作者: walker_liu_fei | 来源:发表于2017-08-15 18:48 被阅读0次

垃圾回收算法

JVM的垃圾回收算法并不是引用计数法,而是可达性分析算法

  • 可达性分析算法: 在判断一个对象是否可以被GC的时候,JVM通过深度优先搜索判断当前对象的应用是否可以到达GC ROOT,如果没有,则下一次GC时,这个对象会被回收

  • 在Java 中GC ROOT可能的类型包括

    • 虚拟机栈的引用
    • 方法去中类静态属性的引用
    • 方法区中常量的引用
    • 本地方法栈中JNI的引用
  • 四种引用类型

    • 强引用(default):即使OOM也不会被回收
    • 软引用: OOM前会被回收
    • 弱引用: 在下一次GC时,会被回收
    • 虚引用: 为一个对象设置虚幻引用的唯一作用是,这个对象在被回收时,收到一个系统通知
方法区中对象的回收
  • 常量池中的对象,例如一个字符串“abc”,如果一个没有String对象引用它,也没有其他地方引用,如果有必要的话,这个字符串会被回收掉
  • 对于类的回收,需要满足三个条件
    • 该类的所有实例已经被回收
    • 加载该类的所有classloader已经被回收
    • 该类对应的java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法
      在大量使用反射,动态代理,CGLIB等ByteCode框架的以及OSGI的,需要在方法区进行垃圾回收

垃圾回收算法

标记-清除
  1. 效率问题
  2. 标记清楚以后会产生大量的不连续的内存碎片
复制算法

它将内存空间分为两部分,每次只使用其中的一部分,这部分内存使用完了以后,将还存活的对象复制到另一块内存模块上

  • 非常适用于新生代的GC算法
  • 具体实现: 一块Eden区,两块survivor区
标记-整理算法

类似标记-清除算法,先是对可回收的对象进行标记,然后这些对象的内存向一边进行移动,然后后整块清除

  • 此回收算法适用于老年代

垃圾回收器

  • 目前所有的新生代gc都是需要STW的(Stop the world)
    • Serial:单线程STW,复制算法
    • ParNew:多线程并行STW,复制算法
    • Parallel Scavange:多线程并行STW,吞吐量优先,复制算法
    • G1:多线程并发,可以精确控制STW时间,整理算法
  • 对象优先在Eden区分配存储空间,当Eden区内存不足时,将会发起一场Minor GC
  • 大对象直接进入老年代 : 尽量少产生一些短命的大对象
  • 长期存活的对象直接进入老年代

相关文章

  • 深入理解JVM第三章笔记

    深入理解JVM第三章笔记 背景 垃圾收集需要考虑的三件事: 哪些内存需要回收 什么时候回收 如何回收 如何判断对象...

  • JVM系列-01-JVM内存模型

    [TOC] 声明 本篇文章是本人阅读《深入理解JVM》和《java虚拟机规范》时的笔记。JVM是HotSpot,j...

  • 分布式Java读书笔记二:JVM

    第3章 深入理解JVM 深入理解JVM JVM标准结构 JVM负责装载class文件并执行,因此,首先要掌握的是J...

  • 深入理解JVM笔记

    ->java体系结构 1、java体系结构:由java语言,class文件,java api和虚拟机组成。 2、j...

  • JVM读书笔记

    深入理解JVM(1) : Java内存区域划分 深入理解JVM(2) : Java堆中对象创建、布局、访问全过程 ...

  • 深入理解JVM(第三章笔记)

    垃圾回收算法 JVM的垃圾回收算法并不是引用计数法,而是可达性分析算法 可达性分析算法: 在判断一个对象是否可以被...

  • JVM

    栈容量由-Xss指定深入理解JVM—JVM内存模型 JVM内存模型和JVM参数的关系

  • JVM学习笔记

    JVM学习笔记 上周观看了圣思园张龙老师所讲的<深入了解JVM>课程,结合自己的理解对有关类加载器的内容(Clas...

  • 深入理解虚拟机之垃圾回收

    《深入理解Java虚拟机:JVM高级特性与最佳实践(第二版》读书笔记与常见面试题总结 上篇文章传送门: 深入理解虚...

  • 深入理解JVM小笔记

    1. 第一节主要讲虚拟机简介,和编译的方法,这里先不尝试编译了,一是比较费时间,二是比较费时间,等非常有空再细究。...

网友评论

      本文标题:深入理解JVM(第三章笔记)

      本文链接:https://www.haomeiwen.com/subject/fqafrxtx.html