A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

最近老接触到堆,栈内存,虽然稀里糊涂的知道一点,可就是没能捅破那层窗纸?求教各位大虾!O(∩_∩)O谢谢!!

评分

参与人数 1技术分 +1 收起 理由
李印东老师 + 1 好好看视频。。

查看全部评分

7 个回复

倒序浏览
本帖最后由 李建雄 于 2011-10-30 23:33 编辑

就把我知道的一点说一下:
首先:启动时JVM在内存中,开辟几个空间,到底是四个还是五个不清楚了,不过其中就有栈内存,堆内存,方法区
main方法在 栈内存中,成员变量在栈内存中开辟空间,static的除外,如果是new一个对象的话,就在堆内存中开辟空间
staitc的都在方法区中,当然方法也在方法区中

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
咖啡 黑马帝 2011-10-30 23:36:19
藤椅
堆是先进先出,而栈是先进后处 1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。
在多态中会涉及到堆,栈,理解了会觉得很简单,不然就看不明白是什么意思。


评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
咖啡 发表于 2011-10-30 23:36
堆是先进先出,而栈是先进后处 1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java ...

嗯,O(∩_∩)O谢谢
回复 使用道具 举报
李建雄 发表于 2011-10-30 23:27
就把我知道的一点说一下:
首先:启动时JVM在内存中,开辟几个空间,到底是四个还是五个不清楚了,不过其中就有 ...

不知道static 相关数据在哪儿开辟内存?
回复 使用道具 举报
好像是这样
堆 垃圾回收机制 存 一维/二位数组 类的实例化/对象/new
栈 自动释放       存 成员变量/实例变量
方法区/共享区   存 被static修饰的
刚刚学 了解不全面 各位补充下
回复 使用道具 举报
石头 黑马帝 2011-10-31 02:25:55
7#
这个东西用语言描述没有画图来得通俗易懂。 强烈建议多看几遍毕老师的教程,黑马程序员_毕向东_Java基础视频教程第03天-17-数组(概述-内存结构)。看得多了,自然而然就理解了。
回复 使用道具 举报
wsssx 2011-10-31 08:04:46
8#
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马