概述:
java虚拟机是一台执行java字节码的虚拟计算机,它拥有独立的运行机制,其运行的java字节码也未必由java编译而成。JVM平台的各种语言可以共享java虚拟机带来的跨平台性、优秀的垃圾回收器,以及可靠的即时编译器。java技术的核心就是java虚拟机,因为所有的java程序都运行在java虚拟机内部。
作用:
java虚拟机是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行,每一条java指令,java虚拟机规范中都有详细定义,如怎么取操作数,怎么处理操作数,处理结果放在哪里等。
特点:
1.一次编译,到处运行。
2.自动内存管理。
3.自动垃圾回收功能。
JVM运行于操作系统之上,与硬件没有直接联系。如下图所示:
JVM(HotSpot VM)的内存模型:
JVM的生命周期:
虚拟机的启动:java虚拟机的启动是通过引导类加载器创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。
虚拟机的执行:java程序开始执行时它才运行,程序结束时它就停止。(执行一个所谓的java程序,真真正正执行的是一个叫做java虚拟机的进程。)
虚拟机的退出:
1.程序正常执行结束。
2.程序在执行过程中遇到了异常或错误而异常终止。
3.由于操作系统出现错误而导致java虚拟机进程终止。
4.某线程调用Runtime类或System类的exit方法,或Runtime类的halt方法,并且java安全管理器也允许这次exit或halt操作。