JVM虚拟机基础

Java虚拟机基础

 

1.Java虚拟机简介

2.JVM的位置和整体结构,指令集架构

3.Java代码的执行流程和生命周期

3.1.执行流程:

3.2.生命周期:


1.Java虚拟机简介

Java虚拟机是一台虚拟的计算机,为了模拟Java程序运行环境,执行单个程序而设计。所以可以说Java的核心就是Java虚拟机,因为所有的Java程序都是运行在JVM虚拟机内。

Java虚拟机中执行的指令是Java字节码指令(二进制),Java字节码未必由Java语言编译而成。

Java指令是根据栈进行设计。栈:跨平台性、指令集小、指令多;执行器性能比寄存器查

 

Java虚拟机特点:一次编译,到处运行;自动内存管理;自动垃圾回收机制。

 

 

2.JVM的位置和整体结构,指令集架构

Java虚拟机运行在操作系统上(例Windows/Linux),不同操作系统JVM有一定区别,所以安装JDK时注意安装的系统环境。

类装载器子系统作用:把字节码文件加载至内存中,生成class对象

线程共享:方法区、堆

线程私有:虚拟机栈(Java栈),本地方法栈、程序计数器

执行引擎:高级语言翻译为机器指令,计算机只能识别机器指令,字节码文件不属于机器指令,所以需要编译。

3.Java代码的执行流程和生命周期

3.1.执行流程:

Java源码-->Java前端编译器-->字节码文件-->Java虚拟机(类加载器->字节码校验器->翻译字节码+JIT编译器)-->操作系统

第一次编译:把源文件编译成字节码文件

第二次编译:把字节码文件的字节码指令编译成机器指令

解释器:主要是为了保证响应时间,逐行对字节码文件解释执行

JIT编译器:可以把反复执行的代码(热点代码)编译成机器指令,同时把机器指令缓存到方法区中,主要是为了程序的执行性能。

解释器和JIT编译器一起使用效果最佳。如果只用解释器,因为解释器是逐行读取,效率低。只用JIT编译器,则可能会导致运行时间过长,因为JIT编译器是把热点代码编译为本地机器指令再缓存到方法区,而把代码编译为本地机器指令需要一定时间,所以不建议所有代码都进行JIT编译。

 

3.2.生命周期:

启动:引导类加载器(bootstrap class loader) 创建 初始类(具体虚拟机规定)进行启动的

执行:执行Java虚拟机进程

退出:正常技术/异常终止/系统错误/System.exit()等

 

 

 

 

反编译:javap -v 字节码文件.clss(全程),需要进入字节码文件目录执行

打印当前执行进程:jps

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值