1.前言
Java虚拟机,又称JVM。我们平常写java程序的时候几乎是感觉不到JVM的存在的,我们只需要根据Java规范去编写类,然后就可以运行程序了,只有程序出现bug了,我们才有可能在控制台上看到一些JVM报错的信息,比如内存溢出异常等问题,通过对Java虚拟机的学习,我相信我们都会明白产生这些问题的原因以及解决的办法。
2.JVM介绍
(1)JDK,JRE,JVM三者的联系
- JVM——java虚拟机,程序运行的地方,保证java语言跨平台;JVM 有自己完善的硬件架构,如处理器、堆栈等,还具有相应的指令系统,其本质上就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。
- JRE——java运行环境,为 Java 的运行提供了所需环境,JRE=JVM+核心类库;
- JDK——Java 开发工具包,提供了 Java 的开发环境和运行环境, JDK=JRE+java开发工具(编译器 Javac);
- IDE——java集成开发环境,IDE=JDK+图形界面;
JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。
(2)JVM赋给Java的特性(Java语言的跨平台)
- Java程序能一次编译,到处运行,在不同的平台运行不需要重新编译,是因为JVM 屏蔽了字节码和底层操作系统之间的差异,对外提供一个一致的运行环境。JVM将java字节码解释为具体平台的具体指令,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改的运行。
举个形象的例子,我们手机要充电吧,但是充电的方式有很多种,你可以直接数据线插到插座充电,也可以用数据线插到电脑USB口充电,一个是电脑一个是插座,为什么都能给手机充电呢?原因就是有数据线屏蔽了插座和电脑的差异。
- JVM还提供了自动内存管理,垃圾回收功能。
- 需要明确的是:每一个java程序运行就会创建一个JVM实例,比如我同时在eclipse中同时运行三个程序,那么就会创建三个JVM实例,三个程序运行于自己的JVM中,互不干扰,当程序运行完毕,那么JVM也会销毁。
(3)Java程序的运行过程
运行一个Java程序的步骤:
1、编辑源代码xxx.java;
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。