简单易懂的-----java虚拟机内存模型

一、虚拟机栈

虚拟机栈是java方法执行的内存模型,栈中存放着栈帧,每个栈帧分别对应一个被调用的方法,方法的调用过程对应栈帧在虚拟机中入栈到出栈的过程

栈是线程私有的,也就是线程之间的栈是隔离的;当程序中某个线程开始执行一个方法时就会相应的创建一个栈帧并且入栈(位于栈顶),在方法结束后,栈帧出栈

 

二、堆

 堆是用来存储对象本身和数组的,在JVM中只有一个堆,因此堆是被线程共享的

三、方法区

方法区是一块所有线程共享的内存区域,在JVM中只有一个方法区,用来存储一些线程可共享的内容,他是线程安全的,多个线程同时访问方法区中同一个内容时,只能有一个线程转载该数据,其他线程只能等待

方法区可存储的内容有:类的全路径名、类的直接超类的全权限定名,类的访问修饰符,类的类型、常量池(字段、方法信息、静态变量、类型引用)等

四、本地方法栈

本地方法栈和虚拟机栈是基本一致的,并且也是线程私有的。他们的区别在于虚拟机栈是为执行Java方法服务的,而本地方法栈是为本地方法服务的

本地方法:含有native关键字的方法

一个Native Method就是一个java调用非java代码的接口

五、程序计数器

线程私有的,记录当前线程所执行的字节码的行号指示器,在程序运行过程中,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、异常处理、线程恢复等基础功能都能依赖计数器完成

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值