JVM基础属性详解

本文详细介绍了JVM的各种类型,包括HotSpot JVM的默认垃圾收集器配置,如Parallel Scavenge和Parallel Old。同时,文章深入探讨了不同类型的垃圾收集器,如Serial、ParNew、CMS和G1,以及它们的算法和特点。此外,还讲解了JVM内存空间的组成,包括程序计数器、虚拟机栈、本地方法栈、堆、元数据区和直接内存。最后,讨论了垃圾回收的基本算法,如标记-清除、复制、标记-整理以及分代收集算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JVM种类

JVM名称公司特性
HotSpot VMOracleJ2SE标准JVM,由Oracle JRockit和Sun Hotspot合并而来
J9 VMIBMIBM自己的产品如Rational,Websphere运行时使用
Zing/ZuluAzul system第三方JVM公司在Hotspot的基础上定制化优化而来,有自己的特性

JVM垃圾收集器种类(HotSpot)

在这里插入图片描述
JVM有多种可以配置选择的JVM垃圾收集器(回收jvm堆),通常是新生代+老年代的2种收集器的组合(有连线的才能组合,G1的整体收集器)

jdk1.7 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代)

jdk1.8 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代)

jdk1.9 默认垃圾收集器G1

通过命令查看: java -XX:+PrintCommandLineFlags -version

中断收集: 垃圾回收时程序停止运行
Serial(单线程) – 复制算法
ParNew(多线程) – 复制算法
Serial Old(单线程老年代版)-- 标记-整理算法
ParallelOld(多线程老年代版)-- 标记-整理算法
Parallel Scavenge(多线程可调收集参数版)-- 复制算法

并发收集: 垃圾回收线程和程序可以同时运行,提高程序响应速度, 对CPU资源要求高,容易产生空间碎片,最终频繁触发老年代
CMS(多线程)-- 标记-清除算法

统一管理整个JVM堆: 统筹关联新老年代,并发收集,不容易产生碎片
G1 – 混合算法

参考文档: https://www.cnblogs.com/chenpt/p/9803298.html
https://blog.youkuaiyun.com/qq_26525215/article/details/84294481

JVM内存空间详解(1.8)

在这里插入图片描述
不共享空间:

  1. 程序计数器:记录每个线程当前执行的字节码指令地址(执行哪行代码),指导程序执行和线程切换时继续执行(执行native方法时为null(native方法是java调用外部语言执行的代码,比如c++))
  2. Java虚拟机栈:线程的对象引用,局部变量等,线程结束或者代码块结束后清空
  3. 本地方法栈: 给native方式使用的栈

共享空间(JVM):
4. 堆: 存放对象实例, 数组,字符串常量
共享空间(本地内存)
5. 元数据区: 虚拟机加载的类信息,静态变量,常量
6. 直接内存:native方法使用
在这里插入图片描述
参考文档:https://blog.youkuaiyun.com/bruce128/article/details/79357870

JVM垃圾回收算法

  1. 标记-清除算法:经可达性分析算法后,对没有引用的对象进行2次标记,如果2次都没有关联,则回收
    在这里插入图片描述
  2. 复制算法:将内存分为大小相等的两块,一块用完后将需要继续使用的对象复制到另外一块,然后回收
    在这里插入图片描述
  3. 标记-整理算法:标记存活对象后统一向一端整理,回收另一端的空间
    在这里插入图片描述
  4. 分代收集算法(现有JVM常用算法,分为新生代-老年代)

参考文档:https://www.cnblogs.com/chenpt/p/9799095.html
https://www.cnblogs.com/chenpt/p/9797126.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值