Java虚拟机

作者: Sum_Day | 来源:发表于2019-04-17 09:59 被阅读0次

    我的Github地址

    有问题直接留言或 联系QQ:1079569023


    虚拟机栈:存储栈帧

    http://bbs.xiangxueketang.cn/forum.php?mod=viewthread&tid=46&extra=page%3D2

    栈帧划分
    
    1.局部变量表(本地变量表)
        存在基本类型+对象引用
    2.操作数栈
        方法的操作流程
    3.动态链接
        多态
    4.返回地址
        对应return操作
    5.其他:1.逃逸分析优化 2.线程内存缓存
    

    本地方法栈

    存放native方法
    

    程序计数器:唯一一个无OOM的区域

    记录程序操作的指令地址
    
    javac xxx.java
    javap -v xxx.class > j.txt
    编译后对应文件中操作数栈中对应的递增数值
    

    方法区

    常量,静态变量,类信息,即时编译后产生的信息
    

    存放动态创建的对象
    

    垃圾回收

    线程共享的区域中的对象GC回收
    1. 核心是堆中内存回收
    2. 方法区(永久代)也存在回收,回收条件十分严格
    虚拟机运行时内存划分
    
    新生代:老年代=> 1:2(90M->新生代30M:老年代60M)
    
    1.新生代:Minor GC(分3个区域)
        eden:8 
        from:1
        to:1
    
    2.老年代 Full GC
        1.长时间存活对象
          新生代对象中的age默认15次转入老年代
        2.新生对象优先放入新生代存,放不下直接放入老年代
        3.from/to Servior区都存不下新对象,from、to中的对象全部放入老年代
        4.担保策略
    
    3.永久代(应该是方法区)
    
    垃圾回收算法
    1. 复制算法,利用率50%(新生代 8:1:1)
    2. 标记清除算法:利用率100%,存在内存碎片
    3. 标记整理算法:100%,内存复制,效率一般般
    新生代回收算法
    1.单线程:Serial
    2.多线程
    
    
    老年代回收算法:
    1.单线程:Serial Old
    2.多线程
    
    CMS:标记清除算法
    
    通用G1算法:标记整理+化整为0
    

    相关文章

      网友评论

        本文标题:Java虚拟机

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