黑马程序员技术交流社区

标题: 堆 栈 方法区 [打印本页]

作者: Armstrong0825    时间: 2015-8-31 23:52
标题: 堆 栈 方法区
      在教学视频中 堆 栈 方法区 都是内存吗 是不是在内存的不同地方? 视频中说对象存在栈中 然后成员存在堆中  静态成员存在方法区中 ...
      这几个的区别是什么 ? 如果都是在一样的内存上 为什么把对象 和成员变量分开存放呀 这样在调用对象的时候不是多了一次地址寻址吗 多一次寻址就代表延迟访问速度  ,或者是堆在硬盘区域? 当访问对象的时候 如果没有访问则没事 调用的时候再去硬盘上去找相关数据?就像操作系统里面的缺页调度那样  
      反正现在对三个的区别不清楚 觉得最有可能的是栈在硬盘 堆和共享区在内存 是这样的吗?

作者: 方育伟    时间: 2015-9-1 00:00
同求深度解析
作者: 果蝇    时间: 2015-9-1 00:02
都在内存里,就好比你把易碎品存在一个仓库,把一般的存在另一个仓库,不好卖的存在另个仓库里一样,分类用的时候会比较方便.栈内存的东西用完了就被释放了,堆内存相当于有个回收站,能存稍微长一点点时间,方法区等学面向对象的时候就知道存什么了.
作者: shdosh    时间: 2015-9-1 00:03
这些区域都是在内存中,我知道的是,程序在调用函数时要做压栈和出栈的动作,创建实例时实例的内容是在堆内存,引用部分在栈内存。
作者: binarycoc    时间: 2015-9-1 00:08
确实不可能放在硬盘
作者: 0825王欢    时间: 2015-9-1 00:09
这么深奥的问题    旁听一下。。。。
作者: 凌端浩    时间: 2015-9-1 00:47
都在内存里,方法区应该在内存低地址区;堆内存在方法区上面;栈内存在系统内存下面,系统内存在内存高地址区;
作者: 微笑的背后3    时间: 2015-9-1 00:52
旁听一下
作者: Armstrong0825    时间: 2015-9-1 23:17
方育伟 发表于 2015-9-1 00:00
同求深度解析

哈哈 我应该是弄清楚了 这些都是在内存里面 只是内存的地址不一样 (从不同的地方开始,结束,他们在内存中可能是相邻的排下去的),分开是为了操作系统的管理
作者: Armstrong0825    时间: 2015-9-1 23:19
果蝇 发表于 2015-9-1 00:02
都在内存里,就好比你把易碎品存在一个仓库,把一般的存在另一个仓库,不好卖的存在另个仓库里一样,分类用的时 ...

大谢  这是我等待的终极版答案  一次就点拨我了   请允许我叫你一声师傅  太有用啦
作者: BG6FVG    时间: 2015-9-1 23:20
好!!!!!!!!!!!!!!!!!!!
作者: Armstrong0825    时间: 2015-9-1 23:24
shdosh 发表于 2015-9-1 00:03
这些区域都是在内存中,我知道的是,程序在调用函数时要做压栈和出栈的动作,创建实例时实例的内容是在堆内 ...

谢谢啦 你的回复从源头上解决了我的问题  thankyou
作者: Armstrong0825    时间: 2015-9-1 23:27
binarycoc 发表于 2015-9-1 00:08
确实不可能放在硬盘

是的  我也是这样想的 跟帖的高手们解决了我的问题  你可以瞄瞄
作者: Armstrong0825    时间: 2015-9-1 23:28
0825王欢 发表于 2015-9-1 00:09
这么深奥的问题    旁听一下。。。。

一丢丢的深奥啦 大神已经给我解决了  哈哈 挺有用的答案 你可以瞄瞄
作者: Armstrong0825    时间: 2015-9-1 23:31
凌端浩 发表于 2015-9-1 00:47
都在内存里,方法区应该在内存低地址区;堆内存在方法区上面;栈内存在系统内存下面,系统内存在内存高地 ...

谢谢啦  所有的高手们都说是在内存里  我就深信不疑啦
作者: lion_good    时间: 2015-9-2 10:46
这是一个课题,三言两语说不清,期待大神详解
作者: Armstrong0825    时间: 2015-9-2 23:41
BG6FVG 发表于 2015-9-1 23:20
好!!!!!!!!!!!!!!!!!!!

哈哈 一起学习 加油咯
作者: Armstrong0825    时间: 2015-9-2 23:43
lion_good 发表于 2015-9-2 10:46
这是一个课题,三言两语说不清,期待大神详解

感觉大神们已经说的比较清楚了 哈哈 简短精炼的回答  
作者: BG6FVG    时间: 2015-9-4 23:36
Armstrong0825 发表于 2015-9-2 23:43
感觉大神们已经说的比较清楚了 哈哈 简短精炼的回答

是的!!!!!!!!!!!!!!!!
作者: wanglianqing    时间: 2015-9-5 00:12
感觉好有深度啊
作者: binarycoc    时间: 2015-9-5 00:14
基本是老生常谈的问题 问问老师吧 每天都看到有人问
作者: 15210373205    时间: 2015-9-5 09:25
栈内存:存储局部变量,当变量所属的作用域一旦结束,所占空间会自动释放
作者: 15210373205    时间: 2015-9-5 09:26
堆内存:数组和对象,通过NEW建立的实例都存放在堆内存中,每一个实体都有内存地址值
作者: xingui66    时间: 2015-9-7 17:46
感觉这些东西好高深,神秘,自己依然只停留在表皮层阶段
作者: Armstrong0825    时间: 2015-9-7 20:16
binarycoc 发表于 2015-9-5 00:14
基本是老生常谈的问题 问问老师吧 每天都看到有人问

算起来还是抽象的 刚开始学很多人都不知道程序怎么跑的 内存里是怎么实现的 但是如果有的同学了解了内存工作原理就觉得很简单了   哈哈  。。。
作者: Armstrong0825    时间: 2015-9-7 20:31
xingui66 发表于 2015-9-7 17:46
感觉这些东西好高深,神秘,自己依然只停留在表皮层阶段

不是的呢  其实是比较简单的 就是说起来吓人罢了 等你看了一两遍视频就so easy了 我也是菜鸟开始学习的 加油哥们




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2