JVM简介
来源:互联网 发布:码云的独立域名 编辑:程序博客网 时间:2024/06/09 23:42
也许对于我们平常开发来说,大多数情况下的确是无需对内存的分配、释放做太多考虑,对Jvm也无需有多么深的理解的。但是也许正是这样,导致我们写的程序会出现一些容易忽视的问题,一旦问题出现,我们不易排查。因此了解jvm,是我们写好程序的一个必须技能。
1. 什么是JVM?
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机。
简单来说就是,JVM是Java程序的运行环境,它同时也是一个操作系统的一个应用程序、一个进程,因此他也有他自己的运行生命周期,也有自己的代码和数据空间.JVM包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。
JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行,这就是Java的能够“一次编译,到处运行”的原因。
2. JRE/JDK/JVM是什么关系?
JRE(JavaRuntimeEnvironment,Java运行环境),也就是Java平台。所有的Java 程序都要在JRE下才能运行。普通用户只需要运行已开发好的java程序,安装JRE即可。
JDK(Java Development Kit)是程序开发者用来来编译、调试java程序用的开发工具包。JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是 安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。
JVM(JavaVirtualMachine,Java虚拟机)是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。
3. JVM的体系结构
粗略分来,JVM的内部体系结构分为三部分,分别是:类装载器(ClassLoader)子系统,运行时数据区,和执行引擎。
4. JVM原理
JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。
java编译器只要面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。
5. JVM执行程序的过程
1) 加载.class文件 2) 管理并分配内存 3) 执行垃圾收集
JRE(java运行时环境)由JVM构造的java程序的运行环,也是Java程序运行的环境,但是他同时一个操作系统的一个应用程序一个进程,因此他也有他自己的运行的生命周期,也有自己的代码和数据空间。
JVM在整个jdk中处于最底层,负责于操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境,因此也就虚拟计算机。
操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境:1) 创建JVM装载环境和配置 2) 装载JVM.dll 3) 初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例4) 调用JNIEnv实例装载并处理class类。
6. JVM的生命周期
1) JVM实例对应了一个独立运行的java程序它是进程级别
a) 启动。启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void
main(String[] args)函数的class都可以作为JVM实例运行的起点
b) 运行。main()作为该程序初始线程的起点,任何其他线程均由该线程启动。JVM内部有两种线程:守护线程和非守护线程,main()属于非守护线程,守护线程通常由JVM自己使用,java程序也可以表明自己创建的线程是守护线程
c) 消亡。当程序中的所有非守护线程都终止时,JVM才退出;若安全管理器允许,程序也可以使用Runtime类或者System.exit()来退出
2) JVM执行引擎实例则对应了属于用户运行程序的线程它是线程级别的
- jvm简介
- JVM简介
- JVM简介
- JVM 简介
- JVM简介
- JVM简介
- JVM简介
- JVM简介
- JVM简介
- jvm简介
- JVM简介
- JVM简介
- JVM简介
- JVM简介
- JVM简介
- JVM学习总结--JVM简介
- JVM读书笔记之JVM简介
- JVM必知必会(一)【JVM简介】
- img的title和alt属性
- Quartz 关于CronTrigger 的 深入
- 树莓派3B as a 无线路由器
- 17-maven插件1
- 整理:著名软件是使用什么语言写的?
- JVM简介
- LeetCode Generate Parentheses递归方法
- ECharts插件简单入门——柱状图
- 将C++代码编译成Matlab可以调用的.mexw文件(涉及多个.cpp文件的编译)
- Linux内核版本和系统启动过程以及具体内核移植和根文件系统的制作
- 字符串之最
- iOS presentViewController:animated:completion:延迟问题
- 定位(相对、绝对)、z-index
- Flask web表单