Java虚拟机的作用:
Java虚拟机就是二进制字节码运行环境,负责装载字节码到其内部,解释/编择为对应平台上的 机器指令执行。每一条Java指令在Java虚拟机规范中都有详细定义,如怎么取操作数,怎么处操 作数,处理结果放在那里。
Java虚拟机的特点:
1.一次编译,到处运行
2.自动内存管理
3.自动垃圾回收功能(gc)
JVM的整体结构
![](https://i-blog.csdnimg.cn/blog_migrate/d9cce5785f94b35542f4b8dfb2e6c361.png)
Java程序经过编译生成Java字节码文件之后就通过字节码文件在jvm里执行。
在jvm中的运行时数据区中的 方法区和 堆是多个线程共享的。
Java栈,本地方法栈,程序计数器则是每个线程都会有的。
JVM的生命周期
1. JVM虚拟机的启动:
Java虚拟机的启动是通过引导类加载器(bootstrap class loacer)创建一个 初始类(initial class )来完成的,这这个类是由虚拟机的具体实现指定的。
2. JVM虚拟机的执行:
1. 一个运行中的Java虚拟机有着一个清晰的任务,执行Java程序。
2. 程序开始执行时他才运行,程序结束时他就停止。
3. 执行一个Java程序的时候,这时候执行的是叫Java虚拟机的进程。
3.JVM虚拟机的退出:
1.程序正常执行结束。
2.程序在执行过程中出现异常或者错误而异常终止
3.由于操作系统出现错误而导致Java虚拟机进程终止
4.某线程调用Runtime类或者system类的exit方法或者runtime类的halt方法,并 Java安全管理器也允许这次exit或者halt操作。
3. 虚拟机的产品
1.Hotspot vm
2.JRockit vm
3.IBM J9 vm