本文共 1511 字,大约阅读时间需要 5 分钟。
图1
虚拟机(JVM)版本是25.4-b25
java -version出来信息包含两部分:
Java软件包发行版本信息和内核(JVM)版本信息。java的发行包包含三种类型Java ME,Java SE,Java EE,发行包就相当于对外销售的产品包,
不同发行包会删减部分特性,因此版本信息首先显示发行包类型和版本。JVM是Java平台的基础和核心,一般在一个java大版本中JVM版本变化都是比较小的。
HotSpot是一种JVM实现技术,相对以往的方式在性能和扩展能力上得到了很大的提升,因此它不是一个独立产品,可以理解Sun(Oracle)实现的JVM版本的品牌商标。
方法区和堆是GC的作用区。
图1:
缺点:
1.每次对象赋值,都要对计算器做维护,而且计算器有一定的消耗。
2.循环引用,无法收回,且并不能判断它们是否死亡
注:JVM并不采用此种方式。
图2:
原理:
1.标记 从root开始进行扫描,对存活的对象进行标记。
2.清除
扫描整个内存空间,回收未标记的对象,使用free-list记录可用区域。
会产生大量不连续的碎片空间,需要进行两次的扫描,耗时严重。不需要额外的内存空间。
原理:从跟(GC Root)集合开始,通过Traceing从from找存活的对象,拷贝到to中。
from、to身份交换,下面从to中分配开始:
没有标记和清除,效率高。
没有内存碎片,可以利用bump-the-pointer(指针碰撞)实现快速内存分配。
原理
标记
与标记-清除一样
整理(压缩)
没有内存碎片,可以利用bump-the-pointer实现快速内存分配。
移动成本高
原理:
Mark-sweep与Mark-compact结合
和Mark-sweep一样,当进行多次GC后,再进行compact 减少移动队形的成本。
不同的对象不同的生命周期不一样,98%以上都是临时的对象。
根据各代特点应用不同的GC算法,提高效率
部分收集
整堆收集
存放着多次经历GC存活的对象;
新创建的大对象有可能直接进入旧生代(老年代),具体要看GC的实现
GC频率相对较低,标记-清除-整理各种结合和优化。
转载地址:http://ekjdi.baihongyu.com/