zoukankan      html  css  js  c++  java
  • JVM--总结

      第一部分 运行时数据内存

        程序计数器:改变程序计数器的值,可以选取下一条字节码指令。程序计数器 支持 程序控制流的指示器,分支,循环,跳转,异常处理,线程恢复等基础操作(线程私有)

        Java堆:所以对象实例和数组内存分配的地方(线程共享) 

        Java虚拟机栈:一般是指局部变量表部分,有基本数据类型,对象引用(线程私有)

        本地方法栈:有Java虚拟机栈一样,但是本地方法栈是为了本地方法使用的(线程私有)

        方法区:用于存储已被虚拟机加载的类型信息,常量,静态变量,即时编译后的代码缓存等数据(线程共享)

      第二部分 对象

        对象的创建:分配内存方式 1.指针碰撞 2 空闲列表

        对象的组成:1.对象头  2.实例数据   3填充数据

        对象的定位:1.句柄  2.指针

      第三部分 判断对象是否死亡

        可达性分析算法:从GC root 根对象啊为节点集,开始搜索对象,搜索的路径形成“引用连” ,若对象在该链上,则说明对象还可以使用,若不在,则对象不能使用

        引用计数算法:在对象中设置一个应用计数器,每当被引用就加一,若引用失效,则将减一,若数据为0时,说明该对象失效。

      第四部分 垃圾收集算法

        分代收集理论:1.弱分代理论:大多数对象就是朝生夕灭  2.强分代理论:当对象可以经过多次垃圾收集都没有消亡就难以消亡。

        标记-清除算法:首先标记要清除的对象,然后第一步完成之后,进行清除操作。缺点:1.会产生碎片空间 2.当数据庞大时,效率变低。

        标记-复制算法:把内存分为大小均等俩部分,每次只使用其中一块内存,当其中这一块内存使用完,把活着对象复制到另一块,然后把使用过后内存清空。缺点:内存变小,效率变低

        标记-整理算法:首先和标记-清理算法的标记阶段一样,然后把存活的对象移动到一端,然后以存活的对象为边界,把未存活的对象进行清除。

      第五部分 垃圾收集器

        新生代

          serial收集器:单线程,当使用该收集器时,就得停掉其他用户线程。

          ParNew收集器:实际时多线程版本的serial收集器。

          Parallel Scavenge收集器:采用标记-复制算法,可以并行的多线程收集器。

        老年代

          CMS收集器:采用的标记-清除算法,该收集器一种获取最短回收停顿时间为目标的收集器。

          Serial Old收集器:单线程,使用标记-整理算法,作用:一 在JDK5之前与Parallel Scavenge搭配,二作为CMS失败的替补方案。

          Parallel Old收集器:基于标记-整理算法,是一个并发多线程收集器,他注重吞吐量或者处理器资源较为稀缺的场合。

        新生-老年代

          G1收集器:它是一款面向服务器端应用的垃圾回收器,它的设计思路是采用基于Region的内存布局形式。

  • 相关阅读:
    [转] 使用Git进行小项目代码管理
    [转] Linux抓包工具tcpdump详解
    几天都是气温骤降,感冒了还没有收获
    1128进入自学实习培训路
    hdu 4952
    hdu 4937 2014 Multi-University Training Contest 7 1003
    hdu 4941 2014 Multi-University Training Contest 7 1007
    hdu 4939 2014 Multi-University Training Contest 7 1005
    hdu 4932 BestCoder Round #4 1002
    POJ 2362
  • 原文地址:https://www.cnblogs.com/linyu1/p/14056392.html
Copyright © 2011-2022 走看看