JVM 运行时数据区域
2015-11-08 21:50
246 查看
Java虚拟机管理的内存包括以下几个运行时数据区域:
另外,还有直接内存,它不是虚拟机运行时数据的一部分,也不是Java虚拟机规范中定义的内存区域,但是这部分内存是会被频繁的使用的。
1.程序计数器:
程序计数器是一块比较小的内存空间,是当前线程执行的字节码行号指示器。Java多线程是通过线程轮流切换来实现的,所以每个线程都有一个自己独立的程序计数器,各个线程的程序计数器互补干扰。2.Java虚拟机栈
Java虚拟机栈描述的是Java方法的执行模型:每个方法执行的时候都会创建一个帧栈用于存放局部变量表,操作栈,动态链接,方法出口等信息。一个方法的执行过程,就是这个方法对于帧栈的入栈出栈过程。3.本地方法栈
本地方法栈与Java虚拟机栈功能相似。Java虚拟机栈储存Java方法执行的数据,本地方法栈储存Native方法执行数据。4.堆
堆是Java虚拟机管理内存中最大的一块,也是垃圾回收经常光顾的地方。堆里存放的是对象的实例。5.方法区域
方法区域存放的是被虚拟机加载的类信息,常量,静态变量,即时编译后的代码等数据。Java虚拟机规范中将它描述成堆的一部分。常量池是方法区域的一部分,里面存放编译期生成的各种字面量和符号引用。另外,还有直接内存,它不是虚拟机运行时数据的一部分,也不是Java虚拟机规范中定义的内存区域,但是这部分内存是会被频繁的使用的。
相关文章推荐
- 用SBT和Play进行JSON序列化
- SQL Server数字开头的数据库表名的解决方法
- 【菜鸟学Java】3:封装一个分页类PageBean
- 百度定位功能封装
- PTA 一元多项式的乘法与加法运算
- spring事务学习(转账案例)(二)
- JVM相关问答
- 通过反向ssh连接+socks5+web-proxy来访问内网资源
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
- MVC 从控制器跳转到视图的方法 |Model传值
- c语言实现,图形化贪吃蛇
- c语言中对可变参数列表的简单理解
- Convolution and Pooling --卷积和池化
- 云过东霞
- 第六章 递归
- Java性能调优笔记
- croppic + thinkphp 实现图片的上传和裁剪
- hdu 5074 Hatsune Miku (动态规划)
- webix学习1
- Xcode调整字体大小