关于数据区中存放的东西
来源:互联网 发布:filco minila mac 编辑:程序博客网 时间:2024/06/05 09:03
Java运行时的数据区包括:(其中前两个是线程共享的)
1.方法区(Method Area) 存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据
2.堆(Heap) 存放对象实例,几乎所有对象实例都在这里分配内存
3.虚拟机栈(VM Stack) 描述的是Java方法执行的内存模型:每个方法在执行的同时会创建一个Stack Frame(方法运行时的基础数据结构)用于存储局部变量表、操作数栈、动态连接、方法出口等信息
4.本地方法栈(Native Method Stack) 与虚拟机栈了类似,不过则为虚拟机使用的到的Native方法服务。(有的虚拟机譬如Sun HotSpot虚拟机直接把本地方法栈和虚拟机栈合二为一)
1.方法区(Method Area) 存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据
2.堆(Heap) 存放对象实例,几乎所有对象实例都在这里分配内存
3.虚拟机栈(VM Stack) 描述的是Java方法执行的内存模型:每个方法在执行的同时会创建一个Stack Frame(方法运行时的基础数据结构)用于存储局部变量表、操作数栈、动态连接、方法出口等信息
4.本地方法栈(Native Method Stack) 与虚拟机栈了类似,不过则为虚拟机使用的到的Native方法服务。(有的虚拟机譬如Sun HotSpot虚拟机直接把本地方法栈和虚拟机栈合二为一)
5.程序计数器(Program Counter Register) 可看作当前线程所执行的字节码的行号的标识器.
1>栈区:主要用来存放局部变量, 传递参数, 存放函数的返回地址。.esp 始终指向栈顶, 栈中的数据越多, esp的值越小。
2>堆区:用于存放动态分配的对象, 当你使用 malloc和new 等进行分配时,所得到的空间就在堆中。动态分配得到的内存区域附带有分配信息, 所以你 能够 free和delete它们。
3>数据区:全局,静态和常量是分配在数据区中的,数据区包括bss(未初始化数据区)和初始化数据区。
注意:
1)堆向高内存地址生长;
2)栈向低内存地址生长;
3)堆和栈相向而生,堆和栈之间有个临界点,称为stkbrk。
一条进程在内存中的映射
假设现在有一个程序,它的函数调用顺序如下:
main(...) ->; func_1(...) ->; func_2(...) ->; func_3(...),即:主函数main调用函数func_1; 函数func_1调用函数func_2; 函数func_2调用函数func_3。
当一个程序被操作系统调入内存运行, 其对应的进程在内存中的映射如下图所示:
阅读全文
1 0
- 关于数据区中存放的东西
- 和kcome的讨论--关于用TBuf8存放文件中读出的数据
- 关于Vector中存放指针的问题
- 数据在内存中存放的位置
- Java中数据存放的位置
- 程序中数据存放的位置
- 关于数据绑定的一些东西
- 关于cookie存放数据问题
- Unity 常用常找的东西存放
- 例说C++中数据的存放空间(栈、堆、数据区)
- NValue存放的数据
- 数据存放的位置
- 【Swift】数据的存放
- 关于powerdesigner中索引的东西
- android中关于application的一些东西
- 关于职业中领悟到的东西
- 关于C++中虚函数表存放位置的思考
- 关于C++中虚函数表存放位置的思考
- Hibernate中session.save()返回值是0
- JS原生数据双向绑定
- .Net单点登录详解 (SSO)
- 一段观察者对象(MutationObserver)的使用
- 数据库事务
- 关于数据区中存放的东西
- java基础知识:this关键字
- leaflet加载tms服务
- 多协议注入工具t50
- 2_按顺序排序,字符串排序
- Linux之父:Linus
- 微信小程序—tabBar底部导航中文注解api
- KMP算法
- 【备忘】Java菜鸟到大牛学习路线之高级篇