鲸技术:JAVA虚拟机结构剖析

Posted 中航鲸技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了鲸技术:JAVA虚拟机结构剖析相关的知识,希望对你有一定的参考价值。

    java虚拟机(Java Virtual Machine),简称为JVM。JVM是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行,使用JVM就是为了支持与操作系统无关,实现跨平台。



一、运行时数据区

鲸技术:JAVA虚拟机结构剖析

  • java堆

    可供各个线程共享的运行时内存区域,是供所有类实例和数组对象分配内存的区域。

  • 方法区

    存储类信息、常量、静态变量、JIT。

  • 程序计数器

  • java虚拟机栈

  • 本地方法栈

    本地方法栈为JVM执行Native方法服务。


二、JVM内存模型

鲸技术:JAVA虚拟机结构剖析

  • 新生代

    Eden:S0:S1 默认是8:1:1

  • 老年代

    主要存放应用程序中生命周期长的内存对象

  • 方法区

    方法区JDK1.7之前被称为永久代(Permanent Space),而在JDK1.8中则被称之为元空间(MetaSpace)

    为什么需要分代?

    1)对象的生命周期不一样

    2)98%对象在minor gc的时候就会被回收掉

    3)分配担保

三、垃圾回收

收集算法:

  • 标记-清除算法

  • 复制回收算法

  • 标记-整理算法

垃圾收集器:

  • Serial -> 采用复制回收算法

  • ParNew -> 采用复制回收算法,就是Serial收集器的多线程版本

  • Parallel Scavenge -> 采用复制回收算法,与ParNew区别就是有GC自适应的调节策略

  • Serial old -> 采用标记-整理算法,CMS预备方案

  • Parallel old -> 采用标记-整理算法

  • CMS -> 采用标记-清除算法,减少回收停顿时间

  • G1 -> 特点:

    1)并发与并行

    2)分代收集

    3)空间整合:G1从整体来看是基于“标记-整理算法”实现的收集器,从局部(两个Region)上来看是基于“复制回收算法”实现的。

    4)可预测的停顿

备注:

    如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。


四、总结

    如果有一种放之四海皆准、任何场景下都适用的完美收集器存在,那HotSpot虚拟机就没必要实现那么多不同的收集器了。



- END -


以上是关于鲸技术:JAVA虚拟机结构剖析的主要内容,如果未能解决你的问题,请参考以下文章

深入浅出剖析Java虚拟机

资源分享 | 深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理)

技术贴:Java虚拟机体系结构深入研究总结

Java虚拟机结构原理与运行时数据区域

理解Java虚拟机体系结构

什么是Java虚拟机?