为了账号安全,请及时绑定邮箱和手机立即绑定

JVM-第一天

标签:
Cocos2d-x

1.什么是JVM

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。

2.JVM生命周期

一、首先分析两个概念

JVM实例和JVM执行引擎实例

(1)JVM实例对应了一个独立运行的java程序,它是进程级别。

(2)JVM执行引擎实例则对应了属于用户运行程序的线程,它是线程级别的。

二、JVM的生命周期

  (1)JVM实例的诞生:当启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点。 

  (2)JVM实例的运行 main()作为该程序初始线程的起点,任何其他线程均由该线程启动。JVM内部有两种线程:守护线程和非守护线程,main()属于非守护线程,守护线程通常由JVM自己使用,java程序也可以标明自己创建的线程是守护线程。 

  (3)JVM实例的消亡:当程序中的所有非守护线程都终止时,JVM才退出;若安全管理器允许,程序也可以使用Runtime类或者System.exit()来退出。

3.JVM结构


webp

一、JVM的内部体系结构分为三部分,

(1)类装载器(ClassLoader)子系统

作用: 用来装载.class文件

(2)执行引擎

作用:执行字节码,或者执行本地方法

(3)运行时数据区

方法区,堆,java栈,PC寄存器,本地方法栈

4.类加载器

负责加载字节码到jvm中,根据类中定义的内容分配到不同的运行时数据区

分类:

Bootstrap ClassLoader:classLoader的根,rt.jar

Extension ClassLoader

Application ClassLoader

用户自定义类加载器

java.lang.Object

java.lang.ClassLoader

类加载器的双亲委派模型

1.加载

负责找到class文件,并加载到jvm中

2.连接

校验:确保类的格式正确

准备:为类中的变量分配内存空间,并初始化默认值

解析:符号引用转换为直接引用

3.初始化: 执行静态代码块,构造器,静态属性

在调用new(), 反射调用类中的方法,子类调用初始化函数

5.执行引擎

本地接口:JAVA API

运行时数据区

6.PC寄存器

保存下一个需要执行的指令的行号

每一个线程有自己独立的PC寄存器

7.方法区


webp



作者:林亚希
链接:https://www.jianshu.com/p/2cd0c7103635


点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消