运行时数据区简短总结

JAVA源代码被编译后生成class文件,由类加载器加载后交给JVM来执行,JVM会用一段存储空间来存储执行过程中用到的数据和相关信息,这个数据段被叫做Runtime data area(运行时数据区),运行时数据区分为程序计数器、java方法栈,本地方法栈、堆和方法区五个部分。

1.PC(程序计数器):PC是一段较小的内存,用来存放java程序下一条指令所在的地址(如果正在执行的是native方法,则该区域的值为undefined),程序计数器的空间大小不会随着程序的运行而变化,所以该区域不存在内存不足(out of memory)的情况。而且在线程的切换过程中为了每个线程都能不受其他线程的影响,所以每个线程都有一个自己的程序计数器。

2.heap(堆):用来存储对象及数组,所有线程共享。

3.Method area(方法区):与堆一样,是被线程共享的区域,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。

4.vm stack(虚拟机栈):也就是java方法栈,是java方法运行的内存模型,java栈是与线程关联的,栈中分了许多个栈帧,这些栈帧是与每个方法关联起来的,每运行一个方法就创建一个栈帧,每个栈帧会含有一些局部变量、操作栈和方法返回值等信息。

5.native method stack(本地方法栈):与java方法栈类似,只不过一个是java方法的内存模型,一个是本地方法的内存模型。

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值