Java虚拟机的内存分配和运行机制(粗谈)

本文详细介绍了Java虚拟机的定义、分类,重点探讨了Java虚拟机的运行时数据区,包括程序计数器、虚拟机栈、本地方法栈、堆和方法区等内存区域的功能、特点及异常情况。此外,还提到了HotSpot虚拟机的实现、对象分配策略以及直接内存的相关知识。
摘要由CSDN通过智能技术生成

一、概述

1.1 虚拟机定义

定义:模拟某种计算机体系结构,执行特定指令集的软件

1.2 虚拟机分类

主要分为两大类:一种是系统虚拟机(Virtual Box、VMware),另一种是程序虚拟机(JVM、.NET CLR、P-Code)。

P-Code:由加州大学圣地亚哥分校(University of California, San Diego,UCSD)于1978年发布的高度可移植、机器无关的、运行Pascal语言的虚拟机

1.3 java虚拟机概述

Java语言虚拟机

可以执行 Java 语言的高级语言虚拟机。 Java 语言虚拟机并不一定就可以称为 JVM,譬如:Apache Harmony。

Java™ 虚拟机

  • 必须通过 Java TCK(Technology Compatibility Kit)的兼容性测试的Java语言虚拟机才能称为
  • “Java™ 虚拟机”
  • Java™ 虚拟机并非一定要执行“Java”程序
  • 业界三大商用 JVM:Oracle HotSpot 、 Oracle JRockit VM、IBM J9 VM
  • 其他虚拟机:Google Dalvik VM、Microsoft JVM

Java虚拟机是整个Java平台的基石,是Java技术用以实现硬件无关与操作系统无关的关键部分,是Java语言生成出极小体积的编译代码的运行平台,是保障用户机器免于恶意代码损害的保护屏障。

Java虚拟机可以看作是一台抽象的计算机。如同真实的计算机那样,它有自己的指令集以及各种运行时内存区域。使用虚拟机来实现一门程序设计语言有许多合理的理由,业界中流传最为久远的虚拟机可能是UCSD Pascal的P-Code虚拟机。

第一个Java虚拟机的原型机是由Sun Microsystems公司实现的,它被用在一种类似PDA(Personal Digital Assistant,俗称掌上电脑)的手持设备上仿真实现Java虚拟机指令集。时至今日,Oracle已有许多Java虚拟机实现应用于移动设备、桌面电脑、服务器等领域。Java虚拟机并不局限于特定的实现技术、主机硬件和操作系统,Java虚拟机也不局限于特定的代码执行方式,它不强求使用解释器来执行程序,也可以通过把自己的指令集编译为实际CPU的指令来实现,它可以通过微代码(Microcode)来实现,或者甚至直接实现在CPU中。

Java虚拟机与Java语言并没有必然的联系,它只与特定的二进制文件格式——Class文件格式所关联,Class文件中包含了Java虚拟机指令集(或者称为字节码、Bytecodes)和符号表,还有一些其他辅助信息。

基于安全方面的考虑,Java虚拟机要求在Class文件中使用了许多强制性的语法和结构化约束,但任一门功能性语言都可以表示为一个能被Java虚拟机接收的有效的Class文件。作为一个通用的、机器无关的执行平台,任何其他语言的实现者都可以将Java虚拟机作为他们语言的产品交付媒介。
译者注:由加州大学圣地亚哥分校(University of California, San Diego,UCSD)于1978年发布的高度可移植、机器无关的、运行Pascal语言的虚拟机。

1.4 java虚拟机架构

在这里插入图片描述

  • Class Loader 类加载器
  • Execution Engine 执行引擎
  • Native Interface本地接口
  • Runtime data area运行时数据区

1.5 java虚拟机的具体实现

Oracle HotSpot 虚拟机

最初由名为“Longview Technologies”的小公司开发,后被 Sun 公司收购。最初并非面向 Java 语言开发,而是面向 Strongtalk 语言。

HotSpot 命名来自它的“热点代码探测”技术。

从 JDK 1.2 开始加入 Sun(Oracle)JDK,在 JDK 1.3 开始成为 Sun(Oracle)JDK 的默认实现,在1.4中成为唯一的虚拟机。

在2006年底开始开源,由此建立的 OpenJDK 项目。

本系列课程中所有的虚拟机实现,所指的都是 Oracle HotSpot

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值