Java虚拟机的认识
关于Java虚拟机的认识,这里所说的虚拟机,其实就是一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。
虚拟机的分类
一般分为以下两类:
系统虚拟机
是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台,例如:Visual Box、VMware。
程序虚拟机
典型的就是Java虚拟机,专门为执行单个计算机程序而设计,在Java虚拟机中执行的指令我们称之为Java字节码指令。
什么是Java虚拟机(JVM)
Java虚拟机就是一台执行Java字节码的虚拟计算机,运行环境为二进制字节码。Java虚拟机是一个高效的、性能优异的、商用级别的软件运行和开发平台。
JVM的基本结构
类加载子系统
负责从文件系统或者网络中加载Class信息,加载的类信息存放于方法区。
方法区
除了存放类的信息,可能还会存放运行时常量池信息。
Java堆
在虚拟机启动的时候建立。几乎所有的Java对象实例都存放在Java堆中。
直接内存
在Java堆外的、直接向系统申请的内存区域。通常情况下,访问直接内存的速度优于Java堆。
垃圾回收系统
可以对方法区、Java堆和直接内存进行回收,其中,Java堆是垃圾回收器的工作重点。
Java栈
每一个Java虚拟机线程都有一个私有的Java栈。一个线程的Java栈在线程创建的时候被创建。Java栈中保存着帧信息、局部变量、方法参数,同时和Java方法的调用、返回密切相关。
本地方法栈
与Java栈相似,不同的是Java栈用于Java方法的调用,而本地方法栈则用于本地方法调用。
PC(Program Counter)寄存器
每个线程私有的空间,Java虚拟机为每一个Java线程创建PC寄存器。
执行引擎
最核心组件之一,负责执行虚拟机的字节码。
JVM的特点
(1)一次编译,到处运行
(2)自动内存管理
(3)自动垃圾回收功能