zoukankan      html  css  js  c++  java
  • 秋招之路7:全面JVM

    jvm全景图

    其中蓝色区域是线程独有的,黄色区域是线程共享的

    分析方法

    javap 命令 javap -c 可以对代码进行反汇编
    

    里面的各种指令,可以用jvm指令手册一个一个查

    一个线程的全景图


    程序计数器:和计组一样,是存放下一条指令所在单元的地址的地方。

    栈帧:一个方法对应一块栈帧内存区域。放自己方法里面各种变量用的。
    其中局部变量表一般是放局部变量。操作数栈,一般是放操作过程中的常量。
    局部变量表中的对象,存的是对象的地址,对象数据存在堆空间中。
    动态链接:将符号引用转换为直接引用。[dai gan]

    本地方法栈:一般是本地的native方法。

    堆内存回收图

    流程:
    当Eden区满了后,GC收集Eden区,没有被收集的对象,分代年龄+1,进入From区;
    下一次Eden区满后,GC收集Eden区和From区,没有被收集的对象,分代年龄+1,进入To区;
    下一次Eden区满后,GC收集Eden区和To区,没有被收集的对象,分代年龄+1,进入From区;
    ...
    直到有分代年龄为15的对象,进入到老年代。
    当老年代满了后,开始Full GC[比较耗时].

    分析内存情况的工具

    jvisualvm:jdk自带的一个工具,然后可以安一个visual GC的插件。

    名词

    GC:垃圾收集器
    Minor GC:新生代GC,指发生在新生代的垃圾收集动作,所有的Minor GC都会触发全世界的暂停(stop-the-world),停止应用程序的线程,不过这个过程非常短暂。
    Major GC/Full GC:老年代GC,对整个堆进行垃圾收集

    可达性分析算法

    算法的基本思想:通过一系列的称之为“GC ROOTs”的对象作为起点,从这些起点开始向下搜索。
    找到的对象都标记为非垃圾对象;其余对象标记为垃圾对象。
    GC ROOTs根节点:线程栈的本地变量,静态变量,本地方法栈的变量等等。

    jvm调优

    主要调优在堆上,也有部分调优在方法区
    目的:减少full GC的次数,减少每次full GC的执行时间。
    需要

    各种场景分析,具体垃圾收集器,垃圾收集算法进行分析。

    一种分析方法:GC日志

  • 相关阅读:
    element-ui日期筛选:选择日期即触发查询
    js点击按钮复制内容到粘贴板
    axios配置及使用(发起请求时带上token)
    axios + vue导出excel文件
    textarea与标签组合,点击标签填入标签内容,再次点击删除内容(vue)
    vue复制textarea文本域内容到粘贴板
    ElementUI动态表格数据转换formatter
    elementUI图片墙上传
    高德地图模糊搜索地址(elementUI)
    elementUI表单验证
  • 原文地址:https://www.cnblogs.com/whyaza/p/12333594.html
Copyright © 2011-2022 走看看