社区
Java SE
帖子详情
请问java中有堆,堆栈这些概念吗??
handsomerun
2006-09-25 09:14:56
比如
类A
然后
A aa = new A();
那么这个aa对象是分配在堆还是堆栈上的呢???
如果在c++中
A * pp = new A();
那么pp就是在栈上的,但是指向的对象是在堆上的,
请问java中是怎么分配的,谢谢了
...全文
1001
32
打赏
收藏
请问java中有堆,堆栈这些概念吗??
比如 类A 然后 A aa = new A(); 那么这个aa对象是分配在堆还是堆栈上的呢??? 如果在c++中 A * pp = new A(); 那么pp就是在栈上的,但是指向的对象是在堆上的, 请问java中是怎么分配的,谢谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
32 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wmzsl
2006-09-26
打赏
举报
回复
类A
A aa = new A(); //aa这个变量的值是引用,指向堆中的对象A
zgysc
2006-09-26
打赏
举报
回复
和C++ 一样
梦想·王
2006-09-26
打赏
举报
回复
java.util.Stack 这个是栈
tiankai1983
2006-09-26
打赏
举报
回复
对象是放在堆里面的。放在这里面的最大好处就是非常灵活。但是放在这里面则需要更多的时间。而对象的句柄是放在堆栈里面的。对象和对象的句柄是分开存放的
Camelh
2006-09-26
打赏
举报
回复
为什么int和integer,一个是基本类型,一个是引用类型的数据,但是这样定义的数据可以直接相加,是如何自动转换的呢?
//这两者之间的处理是不同的,能自动转换是在JDK5.0下的新特性;是由编译器帮你完成了转换过程;
royeleo
2006-09-26
打赏
举报
回复
JAVA数据类型可以自动转换的
Preamble
2006-09-26
打赏
举报
回复
好
xql80329
2006-09-26
打赏
举报
回复
昨天回的第二个贴是错误的!!!!
aa是被放在栈里面的。。aa是实例化的对象 抽象的放在堆里面
huaxiaoxi
2006-09-26
打赏
举报
回复
mark
crazycy
2006-09-26
打赏
举报
回复
JAVA中这些概念是有的;
而且对于性能的改进以及对象的生命周期的认识都有帮助的;
最简略的说:
堆是存放对象的内存区域
栈是存放常量、引用等的内存区域
strawbingo
2006-09-25
打赏
举报
回复
复杂,没研究过
iambic
2006-09-25
打赏
举报
回复
Java中和C++差不多。
A aa = new A();
aa这个引用是在Java虚拟机实现的栈上的,而aa指向的对象是建立在堆中的。
但是你声明基本类型的时候,比如:
int i= 1;
这个i就是分配在栈上的一小段了。
handsomerun
2006-09-25
打赏
举报
回复
恩,好的,
谢谢楼上的,呵呵
fangtaohbjjxy
2006-09-25
打赏
举报
回复
不过,由于没有指针,好像java不能做很复杂的操作也,这是我的感觉。我是说对内存的操作,我没搞过。
我做过j2ee,j2se。也可能是没搞过j2me的缘故把,楼主不要见怪。
yinsheng2005
2006-09-25
打赏
举报
回复
大家帮忙解答一下??
大家帮忙解答一下??
yinsheng2005
2006-09-25
打赏
举报
回复
为什么int和integer,一个是基本类型,一个是引用类型的数据,但是这样定义的数据可以直接相加,是如何自动转换的呢?
handsomerun
2006-09-25
打赏
举报
回复
哦,谢谢了,不错
buffon001
2006-09-25
打赏
举报
回复
java中所有的对象都是存在堆中的,这个在《JAVA2核心技术》里有提到,今天刚看了这些内容。java 中的对象变量可以理解为C++中的对象指针,即在楼主的举例中aa就类似于pp。
wqrz
2006-09-25
打赏
举报
回复
简单类型都在stack里,
复杂类型(对象都是)在heap里,
句柄(指针,不过没指针强大的咚咚)在stack里;如:A aa = new A(); aa在stack里
System.out.println(aa.HashCode())可以看到这个对象在内存里的地址(10进制)
具体哪些地址是stack,哪些地址是heap的小弟就不懂了
rabbitpet
2006-09-25
打赏
举报
回复
学习中.....
加载更多回复(12)
C语言嵌入式Linux编程第4期:
堆
栈
管理
本课程是《C语言嵌入式Linux编程》第4期主要内容包括: 1)程序运行过程中
堆
栈
的内存分布2)栈初始化、大小、栈在函数调用和参数传递过程中的作用3)栈与作用域、栈对形参和实参的管理4)黑客栈溢出攻击原理及实践5)
堆
内存的维护、嵌入式裸机环境下、ucos、linux环境下
堆
内存的管理和维护6)内存泄露与防范、内存错误及检测7)实战:实践自己的
堆
内存管理器
Java
:
堆
和栈的区别
文章目录前言一、
Java
堆
栈
常见问题二、问题理解1.为什么要区分
堆
和栈静态分配动态分配
Java
中的
堆
2.
堆
和栈的区别3.为什么
堆
是线程共享的而栈不是?4.我们平时说的
堆
栈
信息、
堆
栈
方法区是什么?
堆
栈
信息
堆
栈
方法区总结 前言 这篇记录笔者复习
Java
堆
栈
区别 一、
Java
堆
栈
常见问题 在学习
Java
初的时候,我们便知道
Java
的对象都是分配在
堆
中,栈中只保留分配对象的引用;
堆
是各线程共享,栈是各线程独有,当笔者使用
Java
一段时间后,笔者心中产生如下的思考 为什么要分
堆
和栈?
堆
和栈的区别是什么? 为什
JAVA
中的栈和
堆
的区别
一、前言: 1、简介: 1、
堆
栈
是两种数据结构,只能在一端对数据项进行插入和删除。 2、在单片机应用中,
堆
栈
是个特殊的存储区,主要是暂时存放数据和地址。 3、
堆
,队列优先,先进先出 4、栈,先进后出 2、
java
中
堆
栈
的
概念
1、栈(stack)与
堆
(heap)都是
java
用来在内存中存放数据的地方。 2、
java
自动管理栈
堆
,程序员不需要理会(与C++不同)。 3、栈,存储速度比
堆
快,仅次于CPU中的寄存器。缺点是,大小和生命周期是确定的缺少灵活性。 4、栈数据在多线程或者多个栈之间是不可以共享的 5、栈
JAVA
中的
堆
和栈
在
JAVA
的内存空间中,存在重要的两个内容便是
JAVA
的
堆
和栈,两者都用来存放数据,但又有所区别。当你用各种工具使用
java
语言编写了一段程序,当这段程序被运行的时候,在
java
中的内存会有五块区域进行数据的存储,分别为程序计数器,本地方法区,方法区,
堆
,栈。1.
堆
就相当于当你new一个对象的时候,就会分配一个
堆
内存给你,当对象销毁时就会有垃圾回收机制来回收这个对象的
堆
空间。2.栈就好比一串珠子,你只能从一头加或者取,要取后面的就要把前面的取出来才可以。3.
堆
内存作用就是用来存放
java
中的对象和数组,当n
java
中的
堆
与栈
前言:
java
中常常听到
堆
栈
,但是好多时候感觉还是一个模糊的认识。因此,一定要认真的看下这方面的东西,查阅资料。并作出总结。
堆
与栈基本认识 基本认识 首先呢,提出问题:内存中的
堆
栈
和数据结构中的
堆
栈
是否是一样的? 不必过于深刻的去探究的话,也会想到,当然是不同的
概念
啦!内存中的
堆
栈
是实际存在的存储空间,数据结构中的
堆
栈
只是抽象出来的数据存储结构。 具体的话,首先,内存中所谓的
堆
栈
其实是属于其中的一个划分,叫做动态存储区。动态存储区的话,就分为栈区和
堆
区。除了动态存储区的话,内存还可以分为代码区和静态数据
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章