美文网首页
JAVA_虚拟机

JAVA_虚拟机

作者: bboymonk | 来源:发表于2017-05-04 18:20 被阅读0次

    根据JAVA虚拟机规范,JAVA虚拟机所管理的内存包括以下几个运行时数据区域:











    Class类文件的结构:










    垃圾收集算法:

    1,标记-清除
    当确定为收集对象后,标记然后清除。效率不高,有连续的内存碎片,此时如果分配较大对象时找不到连续内存空间,不得不提前触发垃圾收集。
    2,复制
    将可用内存分为两块相等的区域,一块用完,把存活的对象复制到另一块去,清理用完的一块内存空间。代价是内存缩小了一半。
    3,标记-整理
    和标记清除类似,但不是对可回收对象进行清理,面是让所有活着的对象向一端移动,然后清理掉边界以外的内存空间。
    4,分代收集算法
    根据对象存活周期不同将内存分为几块,一般是新生代和老年代。
    新生代对象存活较少------复制算法。
    老年代对象存活较久------采用标记清除和标记整理算法

    垃圾收集器:

    ***注意:并行指的是多线程执行回收,此时用户线程停止工作 。
    而并发指的是多线程执行回收,此时用户线程不停止工作。
    1,Serial收集器:
    单线程执行,其它线程全部停止工作,stop the world。
    2,ParNew收集器:
    多线程执行,可以并发工作。
    3,Parallel Scavenge收集器:
    采用复制算法的新生代收集器,并行工作。
    4,Serial Old收集器:
    serial的老年代版本,采用的是标记-整理算法。
    5,Parallel Old 收集器:
    是Parallel Scavenge的老年代版本
    6,CMS收集器(Concurrent Low Pause):
    以最短回收停顿时间为目标,默认开启线程(cpu数量+3)/4
    7,G1收集器:
    优点--并发与并行,分代收集,空间整理(不会产生内存碎片),可预测的停顿。

    常量池:

    类加载过程:

    1,加载:

    2,验证:

    1,

    基于二进制流的数据验证


    3准备:

    4解析:

    5初始化:


    相关文章

      网友评论

          本文标题:JAVA_虚拟机

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