Java虚拟机学习记录1

Java虚拟机将运行时内存区域划分为五个部分,分别为方法区、堆、pc寄存器、Java方法栈和本地方法栈。Java编译的class文件需要先加载至方法区中,方能在Java虚拟机中运行。

Java程序编译生成的Java字节码,可以在不同平台的虚拟机里运行。

Java文件编译生成class文件加载到虚拟机中,加载后的Java类会被存放于方法区中,实际运行时,虚拟机会执行方法区内的代码。

Java虚拟机将栈划分为:Java方法栈,本地方法栈,PC寄存器(存放各个线程执行位置)

运行过程中,每当调用进入一个Java方法,虚拟机会在当前线程的Java方法栈中生成一个栈帧,用以存放局部变量以及字节码的操作数。这个栈帧的大小是提前计算好的,而且Java虚拟机不要求栈帧在内存空间里连续分布。

当退出当前执行的方法时,不管是正常返回还是异常返回,Java虚拟机均会弹出当前线程的当前栈帧,并将之舍弃。

从硬件角度看,Java字节码无法直接执行,需要Java虚拟机将字节码翻译成机器码。

翻译过程有两种形式:

解释执行:逐条将字节码翻译成机器码并执行

即时编译:将一个方法中包含的所有字节码编译成机器码后再执行

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值