JVM:JAVA虚拟机知识点总结

JVM作用

 学过JAVA的我们都知道,JAVA语言的一大特点就是’一次编译,到处运行’,只需进行一次的编译操作即可放到任意操作系统运行,而实现这个特点的主要原因就在JVM的身上,java文件经过javac命令编译生成class字节码文件,通过java命令利用JVM生成相应操作系统的机器码即可实现在不同操作系统下运行

JVM组成结构

本地方法栈

 本地方法栈中储存class文件中用native关键字修饰的非JAVA实现相关方法

栈(线程)

栈帧

用来存放方法的相关操作数据,其中(以方法add(a,b)令a+b为例):

  • 局部变量表:存放相关局部变量及值,若为对象则保存地址指向堆中相关位置,例:a=1,b=2

  • 操作数栈:存放待操作的值(包括赋值操作),例:1,2

  • 动态链接:将指令码中’#数字’的引用指向相应方法地址(结合后面的堆和方法区理解)

  • 方法出口:方法返回位置

 存放实例化对象,指向储存在元空间中的类元信息(类的组成部分)

元空间(方法区)

 存放常量、静态变量及类的类元信息,指向计算机系统直接内存

程序计数器

 记录待执行/正执行的JVM指令码行号(指令码文件可通过javap命令执行javap -c .class文件 > 输出路径,反编译查看)。

JVM执行流程

场景描述

 假设我们要实现一个钱包程序,方法1为投币功能,方法2负责创建一个钱包对象将方法1投币的数量放到一个钱包中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值