博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jvm虚拟机运行时数据区
阅读量:6109 次
发布时间:2019-06-21

本文共 795 字,大约阅读时间需要 2 分钟。

hot3.png

1、程序计数器:是一块较小的内存空间,他可以看作是当前线程所执行的字节码的行号指示灯。字节码解析器工作就是通过改变这个计数器的值来选取下一条需要执行的字节码指令、分支、循环、跳转、异常处理、线程恢复等基础功能需要依赖这个计数器来完成。每个线程都需要有一个自己的独立计数器,各个线程互不影响,独立存储。

2、虚拟机栈:java方法执行的内存模型->每个方法在执行的同时会创建一个栈帧用于存储局部变量、操作数栈、动态链接、方法出口等信息,每个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。

3、本地方法栈:本地方法栈与虚拟机所发挥的作用是非常相似的,他们之间的区别不过是虚拟机栈为虚拟机执行java方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的Native方法服务

4、java堆:java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。在java虚拟机规范中的描述如下:所有的对象实例以及数组都要在堆上分配,但随着JIT编译器的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化发生,所有的对象都分配在堆上也渐渐变得不是那么绝对了。

5、方法区:与java堆一样,是线程共享内存区域,它用于存储一杯虚拟机加载的类信息、常理、静态变量、即时编译器编译后的代码等数据。虽然java虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做Non-Heap(非堆),目的应该是java堆区分开发。

 

以上内容为“深入理解java虚拟机”,初次了解jvm想把目前我认为有帮助的记录下来也分享给大家。还希望大家多多指教。后续会陆续更新jvm虚拟机相关资料

转载于:https://my.oschina.net/Clarences/blog/895341

你可能感兴趣的文章
高利率时代的结局,任重道远,前途叵测
查看>>
Debian 6.05安装后乱码
查看>>
欢迎大家观看本人录制的51CTO精彩视频课程!
查看>>
IntelliJ IDEA中设置忽略@param注释中的参数与方法中的参数列表不一致的检查
查看>>
关于软件开发的一些感悟
查看>>
uva 10806
查看>>
纯CSS3绘制的黑色图标按钮组合
查看>>
Linux中环境变量文件及配置
查看>>
从0开始学Flutter
查看>>
mysql操作入门基础之对数据库和表的增删改查
查看>>
IIS负载均衡
查看>>
分布式事务,EventBus 解决方案:CAP【中文文档】
查看>>
Linux下的CPU性能瓶颈分析案例
查看>>
spring mvc入门
查看>>
2012在数据库技术会议上的讲话PPT打包
查看>>
【Android】 TextView设置个别字体样式
查看>>
python svn
查看>>
raise语句
查看>>
sequence2(高精度dp)
查看>>
如何向 Linux 内核上游提交 Patch ?
查看>>