一个
Java
虚拟机实例的天职就是:负责运行一个
Java
程序。当启动一个
Java
程序时,一个虚拟机实例就诞生了。当该程序关闭退出,这个虚拟机实例也就随之消亡。如果在同一台计算机上同时运行三个
Java
程序,将得到三个
Java
虚拟机实例。每个
Java
程序都运行于它自己的
Java
虚拟机实例中
。
Java
虚拟机实例通过调用某个初始类的
main()
方法来运行一个
Java
程序。任何拥有这样一个
main()
方法的类都可以作为
Java
程序运行的起点
。
Java
虚拟机内部有两种线程:守护线程与非守护线程。守护线程通常是由虚拟机自己使用的,比如执行垃圾回收任务的线程。但是,
Java
程序也可以把它创建的任何线程标记为守护线程。
Java
程序中的初始线程——就是开始于
main()
的线程,是非守护线程。
在
Java
虚拟机规范中,一个虚拟机实例的行为时分别按照子系统、内存区、数据类型一级指令这个几个术语来描述。这些组成部分仪器展示了抽象的虚拟机的内部抽象体系结构。
图
1
Java
虚拟机内部体系结构
其中,某些运行时数据区时有程序中所有线程共享的,还有一些则只能由一个线程拥有。每个Java虚拟机实例都有一个方法区以及一个堆,他们是有该虚拟机实例中所有线程共享的。当虚拟机装载一个class文件时,它会从这个class文件包含的二进制数据中解析类型信息。然后,它把这些类型信息放在方法区。当程序运行时,虚拟机会把所有该程序在运行时创建的对象都放在堆中。
图
2
所有线程共享的数据
除这两种,其他的运行时数据都是每个线程专有的。当每一个新线程被创建的时,它都将得到它自己的PC寄存器(程序计数器)以及一个Java栈。如果线程正在执行的是一个Java方法(非本地方法),那么PC寄存器的值将总是指示下一条将被执行的指令,而它的Java栈则总是存储该线程中Java方法调用的状态——包括它的局部变量,被调用时传进来的参数,它的返回值,以及运算的中间结果等等。
Java栈是由许多栈帧(stack frame)组成,一个栈帧包含一个Java方法调用的状态。当线程调用一个Java方法时,在虚拟机压入一个新的栈帧到该线程的Java栈中;当该方法返回时,这个栈帧被从Java虚拟机中弹出并抛弃。
Java虚拟机没有寄存器,其指令集使用Java栈来存储中间数据。这样设计的原因是为了保持Java虚拟机的指令集紧凑,同时也便于Java虚拟机的那些只有很少同意寄存器的平台上实现。
图
3
线程专有的运行时数据
上图展示了一个虚拟机实例的快照,它有三个线程正在执行。线程1、线程2都正在执行Java方法,而线程3正在执行一个本地方法。当前正在执行的方法的栈帧则是浅色表示。对于一个正在运行的Java方法的线程而言,它的PC寄存器总是指向下一条被执行的指令。
分享到:
相关推荐
总的来说,《JAVA虚拟机故障诊断与性能优化》这本书为Java开发者提供了一套完整的JVM知识体系,帮助他们从理论到实践全面掌握JVM的相关技能,从而提升应用程序的稳定性和性能。通过阅读书中的"实战JAVA虚拟机 JVM...
虚拟机(Virtual Machine, VM)是一种能够模拟特定计算机体系结构、执行特定指令集的软件环境。它可以分为两类: - **硬件级虚拟机**:例如x86架构的虚拟化技术。 - **高级语言虚拟机**:例如Java虚拟机(JVM)、.NET的...
Java虚拟机规范(JVM规范)是Java技术体系中的核心规范之一,它定义了一个与平台无关的虚拟机执行模型。这个模型被设计成可以在各种硬件和操作系统上运行,并提供了Java程序的编译和运行环境。JVM规范对于理解Java...
JVM 可以解读指令代码并与底层进行交互,包括操作系统平台和执行指令并管理资源的硬件体系结构。 二、JVM 内存模型 JVM 内存模型主要包含线程私有的程序计数器、Java虚拟机栈、本地方法栈和线程共享的堆空间、元...
JVM可以解读指令代码并与底层进行交互:包括操作系统平台和执行指令并管理资源的硬件体系结构。本文主要介绍Java虚拟机(JVM)运行时的相关知识。 JVM内存区域 JVM内存区域可以分为两大部分:线程不共享区域和线程...
JVM可以解读指令代码并与底层进行交互:包括操作系统平台和执行指令并管理资源的硬件体系结构。从本质上讲,虚拟机是个被构建来提供特定或通用目的服务环境的非实体计算机。这听起来像是一个仿真器,用来仿真机器未...
19. **JVM(Java虚拟机)**:JVM是Java运行的基石,负责解析字节码、垃圾回收和性能优化。理解JVM的工作原理有助于优化程序性能。 通过"关于java知识结构图"的学习,初学者可以逐步构建起完整的Java知识体系,从...
以下是对Java虚拟机22个重难点的详细解读: 1. **虚拟机概念**:虚拟机是一种软件实现的计算机系统,它模拟了完整的硬件系统功能,允许在不同的操作系统上运行同一程序。Java Virtual Machine(JVM)是Java程序运行...
考生需掌握Java虚拟机(JVM)的概念,理解字节码如何在不同平台上运行,以及垃圾回收机制如何管理内存。此外,了解Java的安全模型,包括沙箱机制和权限控制,也是考试的重要组成部分。 ### Java体系结构 Java体系...
7. **JVM内存管理**:理解Java虚拟机(JVM)的工作原理是高分必备。试题可能涉及内存区域(堆、栈、方法区等)、垃圾回收机制、内存溢出问题及优化策略。 8. **Java标准库**:利用Java的API解决问题是实际开发中...
- **实现机制**:Java程序通过编译器被转化为字节码(.class文件),然后由Java虚拟机(JVM)解释执行。这种机制使得Java程序可以在任何安装了JVM的操作系统上运行,实现了“一次编写,到处运行”的目标。 #### 二...
本资源摘要信息将对JAVA新手入门笔记-编程基础知识进行详细的解读和分析,涵盖JAVA语言的优缺点、跨平台方案、体系结构、语言分类、架构体系、高级语言的优势、中间层的威力、函数式编程、编译过程等多方面的知识点...
1. **JVM(Java虚拟机)**: JVM是Java程序运行的基础,它负责解释和执行字节码。《操作系统:精髓与设计原理》笔记和原书可以帮助你理解JVM如何与操作系统交互,包括内存管理、线程调度和垃圾回收机制。理解JVM的...
#### 1.3 Java平台的体系结构 Java平台分为三个主要版本: - **Java SE(Standard Edition)**:提供标准功能,适用于桌面应用开发。 - **Java EE(Enterprise Edition)**:扩展了SE的功能,增加了企业级应用所需的...
3. **Java知识体系**:Java的领域非常广阔,涵盖了JVM(Java虚拟机)、集合框架、异常处理、IO流、NIO(New IO)、反射、设计模式等。这些内容构成了Java进阶学习的核心,对于提升编程技能和解决复杂问题的能力有...
Java核心知识点整理面试宝典是一份覆盖Java基础知识的面试准备指南,其中包含了Java集合框架、Java虚拟机(JVM)的深入探讨、Java多线程和高并发处理、Java I/O模型及阻塞队列原理等重要知识点。以下是对这些知识点...