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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© belief丶Only 中级黑马   /  2013-12-17 11:16  /  1039 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我只知道  栈内存:存储的局部变量或方法;                  在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配                堆内存:存储的是对象;
那堆和栈之间怎么转换的?他们的原理是什么?




评分

参与人数 1技术分 +1 收起 理由
FFF + 1 淡定

查看全部评分

5 个回复

倒序浏览
1、首先在堆里面new了一块空间,释放一个new的十六进制出来,
2、同时在栈里面开辟了一个空间接收了从堆里面new的十六进制,并指向了堆里面的对应new空间,
回复 使用道具 举报
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存
一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,堆内存用于存放由new创建的对象和数组。栈中的变量指向堆内存中的变量。
我用最通俗的话说吧。没必要说那么多理论性的东西,只会让人越听越糊涂。就是一个存放地址,一个存放数据的。我也经常被搞的头晕,以前研究外挂的时候特别研究了汇编里的push和pop。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

回复 使用道具 举报
闭眼就天黑 发表于 2013-12-17 23:25
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存
一些基本类型的变量和对象的引用变量都是在函数的栈 ...

嗯,谢谢你的回答..这个我感觉自己理解的比较浅
回复 使用道具 举报
belief丶Only 发表于 2013-12-17 23:32
嗯,谢谢你的回答..这个我感觉自己理解的比较浅

我一般就认为堆存放数据,栈存放指向堆数据的地址。就是所谓的指针吧。。个人理解:P
回复 使用道具 举报
我想你可以这样简单的理解:当你new 一个对象 并用类型变量接收时,类型变量存在于栈内存中,这个变量中保存的内存地址就指向堆内存中对应的那个new出的对象,就这个意思,也不能说是映射关系,你稍微体会一下就好啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马