堆、栈、堆栈的区别?
解决方案 »
- 求教:java正则的条件匹配正确使用方式
- 一个关于图像显示的问题~为什么我这程序无法显示图像啊,错在哪??
- short/int 转化为byte[]
- 在swing下,如何控制Jbutton等元素的大小和位置。
- 诚心请教关于log4j不能写文件的问题!内祥!
- 请教正则表达式问题, 达人请进!
- java 3D question (50分,绝对结帐,希望有人能帮忙,老板催活!!!)
- 求助:加密JAVA源代码的具体方法及详细实例!!!急急急急急急急急急!!!
- 帮我讲讲Apache,Tomcat,JServ的关系,多谢。
- 如何生成BufferedImage图片!
- ArrayList.toArray()问题
- 为什么构造函数一定要用getX()或者setX?
栈,一般用来存放函数的进出口地址、参数、临时变量,JAVA复杂一些,还包括C栈,这是因为JAVA有些功能是用C实现的。
堆,留着你自己去解释吧。
栈:stack(存放局部变量(即引用))
堆:heap(存放new出来的东西(对象))
堆栈一般就可以当作内存来理解吧
stack and heap
stack:中文翻译为栈或堆栈,指的就是一种后进先出的数据结构
heap:堆,堆是一个无序的结构,
为什么stack有时候翻译成堆栈? 因为heap是stack的组成单元。
作者: 芊珑发布日期: 2006-2-10 查看数: 125 出自: http://www.cnitexam.com
一、预备知识—程序的内存分配
一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放
4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放
5、程序代码区—存放函数体的二进制代码。