您好、欢迎来到现金彩票网!
当前位置:老k棋牌 > 栈区 >

如何理解把内存分为4段栈区堆区代码区全局变量区?

发布时间:2019-06-20 01:33 来源:未知 编辑:admin

  这里的内存应该指的是虚拟内存吧,这样分配之后,再通过段页式存储机制映射到实际的物理内存,岂不挺麻烦的? 比如:char *p3 = 123456; // 1234560在常量区,p3在栈上。 这样把程序分解的支离破碎的到底是否能真的提高效率?

  还有,代码区是个什么啊,不是把代码都解体了吗,该去栈的到栈里去个,该去静态区的区静态区。展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  1、栈区(stacksegment)—由编译器自动分配释放,存放函数的参数值,局部变量的值等,具体方法执行结束之后,系统自动释放JVM内存资源;

  2、堆区(heapsegment)—一般由程序员分配释放,存放由new创建的对象和数组,jvm不定时查看这个对象,如果没有引用指向这个对象就回收;

  3、全局变量区(datasegment)—存放全局变量,静态变量和字符串常量,不释放;

  4、代码区(codesegment)—存放程序中方法的二进制代码,而且是多个对象共享一个代码空间区域。

  最后代码区放在程序无权访问的0x7FFFFFFF以上的异次元内存空间.追问我说的虚拟内存指的是虚拟地址空间,比如linux就有4G的虚拟内存。

  程序是在编写的时候,就把相应的值写到对应的内存区吗,还是编译的时候才分配的?或者说是运行的时候才写到对应区的?

  【虚拟内存和虚拟地址空间 两个概念不指名,就容易混淆了】追答常量区的数据在链接的的时候就放入*.exe的数据区, 所有数据区的东西在读入内存时候, 都放入常量区

http://theenigmaco.com/zhanqu/111.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有