美文网首页
2018-08-07 JVM

2018-08-07 JVM

作者: sunruyi | 来源:发表于2018-08-07 18:47 被阅读0次

GC算法https://www.cnblogs.com/smyhvae/p/4744233.html

    引用计数法(无法解决循环引用的问题,不被java采纳)

      根搜索算法

      现代虚拟机中的垃圾搜集算法:

      标记-清除

      复制算法(新生代)

      标记-压缩(老年代)

      分代收集

Stop-The-World

垃圾回收器https://www.cnblogs.com/smyhvae/p/4810168.html

stop the world系列

    Serial收集器:(串行收集器)

    ParNew收集器:Serial收集器的多线程版本(使用多条线程进行GC)

    ParNew Scanvenge收集器 类似ParNew,但更加关注吞吐量。目标是:达到一个可控制吞吐量的收集器。

    G1收集器:是当今收集器发展的最前言成果之一,jdk1.7,商用程度。对垃圾回收进行了划分优先级的操作,这种有优先级的区域回收方式保证了它的高效率。

牛逼系列

    CMS收集器:(老年代收集器)并发标记清除

    初始标记和重新标记时,需要stop the world。整个过程中耗时最长的是并发标记和并发清除,这两个过程都可以和用户线程一起工作。

    疑问:既然标记-清除算法会造成内存空间的碎片化,CMS收集器为什么使用标记清除算法而不是使用标记整理算法:

    答案:CMS收集器更加关注停顿,它在做GC的时候是和用户线程一起工作的(并发执行),如果使用标记整理算法的话,那么在清理的时候就会去移动可用对象的内存空间,那么应用程序的线程就很有可能找不到应用对象在哪里

ZGC?

GC分为两种:Minor GC和Full GC

Minor GC是发生在新生代中的垃圾收集动作,采用的是复制算法。

Full GC是发生在老年代的垃圾收集动作,采用的是标记-清除/整理算法。

内存划分

年轻代 一大块Eden和两块Survivor

老年代

永久代

类加载机制

加载

    类加载指的是将类的class文件读入内存,并为之创建一个java.lang.Class对象,作为方法区这个类的数据访问的入口。

链接

    链接指的是将Java类的二进制文件合并到jvm的运行状态之中的过程。在链接之前,这个类必须被成功加载。(验证,准备,解析)

初始化

    到了初始化阶段,才真正执行类中定义的Java程序代码(或者说是字节码)

相关文章

网友评论

      本文标题:2018-08-07 JVM

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