【面试】介绍一下HotSpot虚拟机

68 篇文章 0 订阅

1. 说明
  • 1.HotSpot虚拟机是一款由Oracle JDK和OpenJDK广泛使用的Java虚拟机(JVM)。
  • 2.HotSpot虚拟机凭借其高效的热点代码探测技术、灵活的内存管理、多样化的垃圾收集器以及强大的并发与多线程支持等特点,成为了Java领域广泛使用的虚拟机之一。
2. 起源与发展
  • 1.HotSpot虚拟机最初并非由Sun公司开发,是由一家名为Longview Technologies的小公司设计。
  • 2.该虚拟机来源于Strongtalk虚拟机,而Strongtalk虚拟机中的技术又来源于为支持Self语言设计的Self虚拟机。
  • 3.从SUN的JDK版本1.3.1开始,HotSpot虚拟机被引入并作为默认的JVM使用。
  • 4.HotSpot虚拟机在2006年底开源,主要使用C++实现,JNI接口部分用C实现。
3. 技术特点
3.1 热点代码探测技术
  • 1.HotSpot虚拟机通过执行计数器找出最具有编译价值的代码(热点代码),然后通过即时编译器以方法为单位进行编译,从而提高Java运行的性能。
3.2 内存管理
  • 1.HotSpot虚拟机采用对象堆内存布局,包括对象头、实例数据和对齐填充。
  • 2.对象头包含Mark Word(用于存储对象的哈希码信息、GC信息等)和类型指针(指向对象类型元数据的指针)。
3.3 垃圾收集器
  • 1.HotSpot虚拟机提供了多种垃圾收集器,如Serial收集器、ParNew收集器、Parallel Scavenge收集器等,以适应不同的应用场景和性能需求。
3.4 并发和多线程支持
  • 1.HotSpot虚拟机支持多线程并发执行,通过CAS重试保证内存分配操作的原子性。
  • 2.在堆中为每个线程分配一小块内存(TLAB),以减少并发问题并提高性能。
3.5 指令重排优化
  • 1.CPU会充分利用多核能力,将没有依赖关系的代码乱序执行,以提高执行效率。
  • 2.HotSpot虚拟机通过volatile关键字等机制来禁用指令重排,保证多线程环境下的数据一致性。
4. 执行模式与性能
  • 1.HotSpot虚拟机采用即时编译(JIT)技术,将常用的部分代码编译为本地(原生)代码,从而提高Java程序的执行性能。
  • 2.HotSpot虚拟机占据绝对的市场地位,从jdk1.3到现如今jdk14都是Oracle JDK和OpenJDK中默认的虚拟机。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王佑辉

老板,赏点吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值