如何理解把内存分为4段,栈区,堆区,代码区,全局变量区?
内存可分为4段,或者有人说是5段云云。可是,内存为什么要这样分配呢?这里的内存应该指的是虚拟内存吧,这样分配之后,再通过段页式存储机制映射到实际的物理内存,岂不挺麻烦的?...
内存可分为4段,或者有人说是5段云云。
可是,内存为什么要这样分配呢?
这里的内存应该指的是虚拟内存吧,这样分配之后,再通过段页式存储机制映射到实际的物理内存,岂不挺麻烦的? 比如:char *p3 = "123456"; // 123456\0在常量区,p3在栈上。 这样把程序分解的支离破碎的到底是否能真的提高效率?
还有,代码区是个什么啊,不是把代码都解体了吗,该去栈的到栈里去个,该去静态区的区静态区。 展开
可是,内存为什么要这样分配呢?
这里的内存应该指的是虚拟内存吧,这样分配之后,再通过段页式存储机制映射到实际的物理内存,岂不挺麻烦的? 比如:char *p3 = "123456"; // 123456\0在常量区,p3在栈上。 这样把程序分解的支离破碎的到底是否能真的提高效率?
还有,代码区是个什么啊,不是把代码都解体了吗,该去栈的到栈里去个,该去静态区的区静态区。 展开
推荐于2016-09-14 · 知道合伙人数码行家
关注
展开全部
1、栈区(stacksegment)—由编译器自动分配释放,存放函数的参数值,局部变量的值等,具体方法执行结束之后,系统自动释放JVM内存资源;
2、堆区(heapsegment)—一般由程序员分配释放,存放由new创建的对象和数组,jvm不定时查看这个对象,如果没有引用指向这个对象就回收;
3、全局变量区(datasegment)—存放全局变量,静态变量和字符串常量,不释放;
4、代码区(codesegment)—存放程序中方法的二进制代码,而且是多个对象共享一个代码空间区域。
2、堆区(heapsegment)—一般由程序员分配释放,存放由new创建的对象和数组,jvm不定时查看这个对象,如果没有引用指向这个对象就回收;
3、全局变量区(datasegment)—存放全局变量,静态变量和字符串常量,不释放;
4、代码区(codesegment)—存放程序中方法的二进制代码,而且是多个对象共享一个代码空间区域。
东莞市友贸实业有限公司_
2023-11-22 广告
2023-11-22 广告
第五代双倍数据速率DDR5双列直插式内存模块是一种高速、高性能的内存模块,适用于需要高带宽和低延迟的应用场景。与前几代内存模块相比,DDR5双列直插式内存模块具有更高的数据传输速率和更低的功耗,同时提供了更大的内存容量和更高的可靠性。在数据...
点击进入详情页
本回答由东莞市友贸实业有限公司_提供
展开全部
应该是DLL, EXE等文件 分为代码区和数据区
代码区的是只读的, 防止代码恶意写入
数据区再分为只读, 读写, 只写
然后EXE载入内存的时候, 分为静态区, 栈区, 和堆区
文件数据区的数据肯定, 放在静态区
代码执行时产生的临时数据, 放在栈区
代码执行时产生的持续性数据, 放在堆区
虚拟内存是把硬盘的空间, 挪为内存使用. 系统这么做是有目的的, 包括
扩展内存, office自动存储文件, 休眠等等
虚拟内存只是个服务, 你说的分解代码和它的用途无关,
分段式和分页式是实现虚拟内存技术的时候才有意义.
最后代码区放在程序无权访问的0x7FFFFFFF以上的异次元内存空间.
代码区的是只读的, 防止代码恶意写入
数据区再分为只读, 读写, 只写
然后EXE载入内存的时候, 分为静态区, 栈区, 和堆区
文件数据区的数据肯定, 放在静态区
代码执行时产生的临时数据, 放在栈区
代码执行时产生的持续性数据, 放在堆区
虚拟内存是把硬盘的空间, 挪为内存使用. 系统这么做是有目的的, 包括
扩展内存, office自动存储文件, 休眠等等
虚拟内存只是个服务, 你说的分解代码和它的用途无关,
分段式和分页式是实现虚拟内存技术的时候才有意义.
最后代码区放在程序无权访问的0x7FFFFFFF以上的异次元内存空间.
追问
我说的虚拟内存指的是虚拟地址空间,比如linux就有4G的虚拟内存。
还是上面那个问题:char *p3 = "123456"; // 123456\0在常量区,p3在栈上。
程序是在编写的时候,就把相应的值写到对应的内存区吗,还是编译的时候才分配的?或者说是运行的时候才写到对应区的?
【虚拟内存和虚拟地址空间 两个概念不指名,就容易混淆了】
追答
常量区的数据在链接的的时候就放入*.exe的数据区, 所有数据区的东西在读入内存时候, 都放入常量区
虚拟内存和虚拟地址空间是完全不同的概念.
32位的CPU都只有4G的寻址空间.虚拟不虚拟无关系.
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询