当前位置: 首页 > web >正文

深入理解HotSpot JVM 基本原理

关于JAVA

Java®编程语言是一种通用的、并发的、面向对象的语言。它的语法类似于C和C++,但它省略了许多使C和C++复杂、混乱和不安全的特性。

Java 是几乎所有类型的网络应用程序的基础,也是开发和提供嵌入式和移动应用程序、游戏、基于 Web 的内容和企业软件的全球标准。.

从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Java 无处不在!

Java的技术体系主要有各种硬件平台上的JVM虚拟机、提供各开发领域接口支持的Java API、Java编程语言、三方Java框架(Spring等)构成。

Java程序设计语言、Java虚拟机、Java API类库这三部分统称为JDK(Java Development Kit),JDK是用于支持Java程序开发的最小环境。

可以把Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE(Java Runtime Environment),JRE是支持Java程序运行的标准环境。

下图展示了Java技术体系所包含的内容,以及JDK和JRE所涵盖的范围。

关于JVM

Java虚拟机是Java平台的基石。负责其硬件和操作系统的独立性,为Java字节码的执行提供运行时环境。

JVM虚拟机在Java 虚拟机规范中没有规定具体实现,而是有各大厂商自己实现。

Implementation details that are not part of the Java Virtual Machine’s specification would unnecessarily constrain the creativity of implementors. For example, the memory layout of run-time data areas, the garbage-collection algorithm used, and any internal optimization of the Java Virtual Machine instructions (for example, translating them into machine code) are left to the discretion of the implementor.

Classic VM 是“世界上第一款商用Java虚拟机”,在JDK 1.2之前是Sun JDK中唯一的虚拟机。

在JDK 1.2时,它与HotSpot VM并存,而在JDK 1.3时,HotSpot VM成为默认虚拟机,直到JDK 1.4的时候,Classic VM才完全退出商用虚拟机的历史舞台。

1999年4月27日,HotSpot虚拟机发布,HotSpot最初由一家名为“Longview Technologies”的小公司开发,因为HotSpot的优异表现,这家公司在1997年被Sun公司收购了。后来它成为了JDK 1.3及之后所有版本的Sun JDK的默认虚拟机。

在2008年和2009年,Oracle公司分别收购了BEA公司和Sun公司,这样Oracle就同时拥有了两款优秀的Java虚拟机:JRockit VM和HotSpot VM。

关于HostSpot

Java HotSpot虚拟机是Sun用于Java平台的VM。 它使用许多先进技术为Java应用程序提供最佳性能,包括最先进的内存模型,垃圾收集器和自适应优化器。

在SUN/Orace JDK中包括两种风格的VM

  • client mode
  • server mode

默认以client mode启动。

启动命令加- server,以server mode启动。

查看当前JVM mode:

两种mode的区别:

client mode

  • 短时间内启动,运行时,占用更少内存
  • C1轻量级编译器,优化较少
  • 适合轻量级程序和桌面程序

server mode

  • 启动慢,运行时,占用更大的内存
  • C2重量级编译器,更彻底的优化
  • 能提供更好的性能,适合生产部署

HotSpot JVM Architecture

HotSpot JVM 主要包括3个组件:

  • Class Loader Subsystem
  • Runti
http://www.xdnf.cn/news/872.html

相关文章:

  • C++学习之游戏服务器开发十一DOCKER的基本使用
  • 【数学建模】随机森林算法详解:原理、优缺点及应用
  • 【Python 02 】数值类型、字符串、格式化输出
  • Java反射全解(八股)
  • 文档处理控件Aspose.Words 教程:在 Word 中删除空白页完整指南
  • 2025年二级造价工程师备考要点分析
  • spark和hadoop的区别
  • 【C++游戏引擎开发】第19篇:Compute Shader实现Tile划分
  • 计组1.2.2——各个硬件的工作原理
  • 硬件工程师面试常见问题(4)
  • 操作系统期中复习
  • 车载软件架构 --- 二级boot设计说明需求规范
  • 序列号绑定的SD卡坏了怎么办?
  • AI驱动下的企业学习:人力资源视角下的范式重构与价值觉醒
  • Materials Studio(二)——无机分子建模
  • 当try遇见catch:前端异常捕获的边界与突围
  • ADB -> pull指令推送电脑文件到手机上
  • 24. git revert
  • [渗透测试]渗透测试靶场docker搭建 — —全集
  • 【Linux】轻量级命令解释器minishell
  • 计算机组成原理笔记(十九)——4.4定点乘法运算
  • CentOS 7进入救援模式——VirtualBox虚拟机
  • 深入解析Vue3响应式系统:从Proxy实现到依赖收集的核心原理
  • Kubernetes 创建 Jenkins 实现 CICD 配置指南
  • 目标检测中的损失函数(二) | BIoU RIoU α-IoU
  • k8s之 kube-prometheus监控
  • 6N60-ASEMI机器人功率器件专用6N60
  • RabbitMQ
  • 进程控制(linux)
  • Tailwind 武林奇谈:bg-blue-400 失效,如何重拾蓝衣神功?