java虚拟机介绍

本文主要介绍java虚拟机的体系结构,在程序运行过程中的作用。

java虚拟机规范中,一个虚拟机的行为是按照子系统、内存区、数据类型以及指令几个术语来描述的。如图所示:

             

方法区

 

Java

PC寄存器

本地方法栈

 

类装载器子系统

 

执行引擎

 

本地方法接口

运行时数据区

本地

方法库

java虚拟机内部体系结构

每个虚拟机都有一个类装载器子系统,它根据给定的全限定名来装载类或接口;

每个虚拟机都有一个执行引擎,它负责执行那些包含在被装载类的方法中的指令;

内存是任何程序运行的基础,java虚拟机把所有需要保存的东西组织到几个“运行时数据区”进行管理。规范对该部分的描述是抽象的,具体实现由设计者决定的。内存可以按照功能分为两个概念:共享区和私有区。

共享区是程序中所有线程共享的,每个java虚拟机实例都有一个方法区及一个堆,它们是由该虚拟机实例中所有线程共享的。当虚拟机装载一个class文件时,它会从这个class文件包含的二进制数据中解析类型信息,然后把这些类型信息放到方法区中。当程序运行时,虚拟机会把所有该程序在运行时创建的对象都放到堆中。

私有区是一个线程私有的,其它线程不能访问。当一个新线程被创建时,将得到自己的PC寄存器以及一个java栈,当执行java方法时,PC寄存器指示下一个执行的指令,而java栈中存储的是该线程中java方法(非本地方法)调用的状态――包括局部变量以及参数、返回值等信息;对本地方法调用的状态,则依据具体实现方式存储到本地方法栈中,也可能是其它存储区。

Java栈是由许多栈帧组成的,一个栈帧包含一个java方法的调用状态。也就是说当调用一个java方法时,虚拟机压入一个新的栈帧到栈中;方法返回时,从栈中弹出并抛弃。

以上就是java虚拟机的体系结构,为反编译、优化代码等过程提供参考!

参考文献:

[1] 《深入java虚拟机》第二版

[2] java虚拟机规范

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值