zoukankan      html  css  js  c++  java
  • 【JVM】初识JVM(下)

    上篇博客中,我们说了说JVM的结构和堆的分代,这次我们简单说说JVM的垃圾回收机制和监测。

    JVM的垃圾回收机制

    再来看下图,只有方法区和堆是线程共享的,所以只有他俩有垃圾回收机制。岳母在上其余的都随线程死而死了,也就没有垃圾之说了。

    何为垃圾?白日梦我不再被引用的对象就是垃圾。垃圾回收就是将此对象清除出来,释放空间。这样就可以盛放新的对象了。
    至于方法区是不是和堆中的永久代是一回事,好像没有定论。

    几种垃圾回收算法

    复制算法

    定义:病态宠爱把内存分为2个空间:A和B,一个用来负责装载正常的对象信息,一个用来做垃圾回收。每次把A中存活的对象全部复制到B里面,再一次性的将A删除。
    其中,伊甸区和幸存0、1区的比例是:8:1:1。


    特点:没有碎片问题,但是内存缩小为了原来的一半。适用于新生代的回收。

    标记清除算法

    定义:先标记,再清除。先开始对存活的对象进行标记,然后将没有被标记的对象进行回收。

    薛安小说主角特点:会产生大量的碎片

    标记整理算法

    定义:前面两者的综合,先标记、清除完,然后将存活的对象移动到内存的一端。

    特点:穿成菟丝花女主的姐姐成本较高,但是解决了碎片问题。适用于老年代的回收。

    几种垃圾收集器

    垃圾回收算法和垃圾收集器的关系:垃圾回收算法是理论,垃圾收集器是实践。可以说某某收集器用的是某某回收算法。
    下图是7种垃圾收集器,3种适用于新生代,3种适用于老年代,还有一种G1适用于两者。如果两个收集器之间连线,说明其可以搭配使用。

    新生代
    Serial收集器
    单线程,在进行垃圾收集时必须暂停其他所有的工作线程。

    ParNew收集器
    是Serial收集器的多线程版本,除了使用多线程进行垃圾收集外,其余与Serial收集器相同。

    Parallel Scavenge收集器
    使用复制算法的并行的多线程收集器。

    老年代
    CMS收集器
    伪装学渣一种以获取最短回收停顿时间为目标的收集器。优点:并发收集,低停顿。基于“标记-清除”算法。

    Serial Old收集器
    Serial收集器的老年代版本,单线程,使用标记整理算法。

    Parallel Old收集器
    Parallel Scavenge收集器的老年代版本,多线程,使用标记整理算法。

    综合
    G1收集器
    基于“标记-整理”算法实现收集器,可以非常精确地控制停顿。

    JVM性能监测

    在cmd中输入jvisualvm命令,启动程序。
    在这里插入图片描述

    查看性能

    顶级强者此时就能在监视里看到性能状况了。

    在这里插入图片描述

    小结

    极品废婿在这次JVM的学习中,我对怎么学习有了更深一层的理解:
    (1)学啥得有个系统,好理解的知识可以看书,难理解的可以看视频。先总结出一个体系,然后再往里面填东西,这个时候有哪些细节不懂,再去查博客。
    (2)对学习材料要一个精通,多个泛读,不管多难的知识点,多看几个资料,当有了共鸣,也就理解了。如果还是不懂怎么办?那就“吊起来”,也就是写下来,不管了,等日后再来看,说不定就明白了。
    (3)怎么使用博客?对于一个新概念,前期可以在网上查查这是个什么东西,10分钟大致浏览一下;后期填补空白的时候,可以多查查,看看别人是怎么说的。
    (4)学新知识时,要多和旧知识、现实生活联系。这样,自己的知识网才能更严谨。

  • 相关阅读:
    【引用】将WINNT.XPE安装到移动硬盘的方法
    手把手教你把Vim改装成一个IDE编程环境(图文)(转)
    [转载]经验丰富的程序员和代码行数
    pkgconfig的使用(转)
    焦点新闻总结
    仿百度弹出框在框架页面中的应用
    发现不明确的匹配的原因和解决办法
    总结一个DAL中写IList返回实体的方法
    后台管理系统界面和样式,点击左边新建标签效果
    在用户控件中用户登录后台脚本判断
  • 原文地址:https://www.cnblogs.com/Katerina/p/11372080.html
Copyright © 2011-2022 走看看