关于JVM内存区域划分
2016-07-27 17:49
239 查看
大多数JVM 将内存区域划分为 MethodArea(Non-Heap)(方法区) ,Heap(堆) , ProgramCounter
Register(程序计数器) , VMStack(虚拟机栈,也有翻译成JAVA 方法栈的),NativeMethod Stack ( 本地方法栈 ),其中MethodArea 和 Heap 是线程共享的 ,VM Stack,NativeMethod
Stack 和ProgramCounter Register 是非线程共享的。
但是,为什么分为 线程共享和非线程共享的呢?
首先我们熟悉一下一个一般性的Java
程序的工作过程。一个Java
源程序文件,会被编译为字节码文件(以class
为扩展名),每个java程序都需要运行在自己的JVM上,然后告知 JVM
程序的运行入口,再被 JVM
通过字节码解释器加载运行。那么程序开始运行后,都是如何涉及到各内存区域的呢?
概括地说来,JVM初始运行的时候都会分配好 Method Area(方法区) 和Heap(堆) ,而JVM
每遇到一个线程,就为其分配一个 Program Counter Register(程序计数器) , VM Stack(虚拟机栈)和Native Method Stack (本地方法栈), 当线程终止时,三者(虚拟机栈,本地方法栈和程序计数器)所占用的内存空间也会被释放掉。这也是为什么把内存区域分为线程共享和非线程共享的原因,非线程共享的那三个区域的生命周期与所属线程相同,而线程共享的区域与JAVA程序运行的生命周期相同,所以这也是系统垃圾回收的场所只发生在线程共享的区域(实际上对大部分虚拟机来说知发生在Heap上)的原因。
Register(程序计数器) , VMStack(虚拟机栈,也有翻译成JAVA 方法栈的),NativeMethod Stack ( 本地方法栈 ),其中MethodArea 和 Heap 是线程共享的 ,VM Stack,NativeMethod
Stack 和ProgramCounter Register 是非线程共享的。
但是,为什么分为 线程共享和非线程共享的呢?
首先我们熟悉一下一个一般性的Java
程序的工作过程。一个Java
源程序文件,会被编译为字节码文件(以class
为扩展名),每个java程序都需要运行在自己的JVM上,然后告知 JVM
程序的运行入口,再被 JVM
通过字节码解释器加载运行。那么程序开始运行后,都是如何涉及到各内存区域的呢?
概括地说来,JVM初始运行的时候都会分配好 Method Area(方法区) 和Heap(堆) ,而JVM
每遇到一个线程,就为其分配一个 Program Counter Register(程序计数器) , VM Stack(虚拟机栈)和Native Method Stack (本地方法栈), 当线程终止时,三者(虚拟机栈,本地方法栈和程序计数器)所占用的内存空间也会被释放掉。这也是为什么把内存区域分为线程共享和非线程共享的原因,非线程共享的那三个区域的生命周期与所属线程相同,而线程共享的区域与JAVA程序运行的生命周期相同,所以这也是系统垃圾回收的场所只发生在线程共享的区域(实际上对大部分虚拟机来说知发生在Heap上)的原因。
相关文章推荐
- 对于Fragment的一些理解
- Best practices for Express app structure
- kernel/sysctl.c
- mybatis自定义typeHandler映射对象为JSON
- UVA 11149-Power of Matrix (等比矩阵求和)
- Java用包代替了命名空间
- java Excel表格生成工具类
- Fragment+Viewpager防止预加载
- 编译Qt5.6-1 for WEC2013
- IT之路的总结
- XlistView的上拉刷新下拉加载
- pwd ,cd ,issue和ls的使用
- Hibernate5.2之HQL查询
- DataTable Linq Example
- Linux 高精確的時序(sleep, usleep,nanosleep) from:http://blog.sina.com.cn/s/blog_533ab41c0100htae.html
- 插件化开发—动态加载技术加载已安装和未安装的apk
- win7连接共享“请检查名称的拼写.否则网络可能有问题”
- mysql获取中文字段内容
- ⑴输入10个职工的姓名和职工号;⑵按职工号由小到大排序,姓名顺序也随之调整;⑶要求输入一个职工号,查找法找出该职工的姓名。从主函数输入要查找的职工号,输出该职工姓名
- Mybatis插件使用-数据库CRUD生成器与代码自动提示检查