鲸技术:JAVA虚拟机结构剖析
Posted 中航鲸技术
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了鲸技术:JAVA虚拟机结构剖析相关的知识,希望对你有一定的参考价值。
java虚拟机(Java Virtual Machine),简称为JVM。JVM是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行,使用JVM就是为了支持与操作系统无关,实现跨平台。
java堆
可供各个线程共享的运行时内存区域,是供所有类实例和数组对象分配内存的区域。
方法区
存储类信息、常量、静态变量、JIT。
程序计数器
java虚拟机栈
本地方法栈
本地方法栈为JVM执行Native方法服务。
新生代
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虚拟机结构剖析的主要内容,如果未能解决你的问题,请参考以下文章