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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在面向对象的语言中,方法的内存是在类中开辟的。那函数呢,是在每个使用到该函数的对象中还是有一块单独的区域?而且对象是开辟在内存中的堆中的,函数是在堆中还是在栈里。糊涂了

6 个回复

倒序浏览
放在代码区,堆存放实体的成员变量,栈是临时分配的,比如方法值传递时 的临时参数
回复 使用道具 举报
卧龙小 发表于 2014-9-22 17:37
放在代码区,堆存放实体的成员变量,栈是临时分配的,比如方法值传递时 的临时参数 ...

请问代码区又是在哪?还是代码区就是代码区,跟堆,栈是平行的关系?盼回复。我对内存不是很精
回复 使用道具 举报
本帖最后由 卧龙小 于 2014-9-22 17:55 编辑

怎么不可以发本地图啊, 我描述下,运行时数据时,会为对象分为3个区 栈区,堆区,代码区,其实还有其他的 暂时不扯(比如静态区)。他们分别有不同的功能1.栈区 具体方法执行结束之后,系统自动释放
2.堆区 存放实例化后的对象
3.代码区 存放程序中方法的二进制代码
他们都是内存中被分割后的区域,用于不同的功能
回复 使用道具 举报
看作用域···
回复 使用道具 举报
卧龙小 发表于 2014-9-22 17:45
怎么不可以发本地图啊, 我描述下,运行时数据时,会为对象分为3个区 栈区,堆区,代码区,其实还有其他的  ...

分为动态存储区,静态存储区,代码区。动态存储区就是老师讲的堆和栈,栈里面和堆里面就是你说的。静态存储区存储全局变量及静态变量等,代码区就是存储代码的二进制形式了。想起来了。谢谢
回复 使用道具 举报
求同~~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马