我们数据结构里有堆这一章吗,我怎么记得没有啊?
数据结构里的堆指的就是线性链表吗?
java里的堆和数据结构里的堆是一回事吗?
数据结构里的堆指的就是线性链表吗?
java里的堆和数据结构里的堆是一回事吗?
解决方案 »
- 发现一个好的界面程序,与大家共分享
- 请问如何实现在console多行输入command
- 一个Java I/O问题,看看你是不是能够答对!
- swing中利用dbswing.jar包做字体设置的问题?
- eclipse如何把一个工程下的文件编译到另一个工程的classes下?(真心求教)
- 问一个replaceAll替换的问题,在线等!
- 如何把java的应用程序作为nt service?
- 把一维数值中的数据按照顺序转换为2维数组的数据输出。
- 编写UDP通讯程序,是否需要多线程?我的程序一旦启动接受就处于无相应状态?
- 快快帮我一下,我快疯了!关于读取数据库中文字个数的问题!
- 怎样 java 编写 FTP 服务端程序
- 一个较复杂的异构环境中字符编码的问题,请大家指点一下
英文是“heap”,在操作系统中用来指一段连续的内存,它有一个重要特性是“当被分配,并用完后,系统不自动将它回收,需要自己用编程语句(如:c++中的delete())来回收它栈,
英文是“stack”,在操作系统中用来指一段连续的内存,它用完后,系统会自动回收,程序员不用为它得回收操心 在java中所有的new生成的对象都是放在堆中的
在JAVA里面 堆放的是真正的对象
栈里放的是指向该对象的引用.
引用类型存放在栈内存中
因为JAVA所有的对象都是放在堆里,而引用放在栈上你有兴趣可以看看C的书
从内存分配来看,在编译期被确定并申明的对象是放在栈上
在运行起申明的对象放在堆上栈容量比较小,堆则视内存大小在C里由于内存分配都是自己做的,就会比较明显
Object obj; //在栈上分配内存
Object obj = new Object; //在堆上分配内存
java中的内存都是以堆实现的,相当于C中的malloc或者C++中的new
这也是为什么java中声明数组长度可以是变量的原因,而C或者C++就不行。
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。
当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。
堆内存用来存放由new创建的对象和数组。
在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。
在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。
引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。
1数据结构中也有堆。
----------数据结构里的堆指的就是线性链表吗?2 java里面堆的概念和数据结构中堆栈的概念不一
----------怎么就不一样呢?