接触编程有段时间了.一直没深入堆栈问题。这一次一定要深度解析把他一次搞定.
Java把内存划分成两种:一种是栈内存,一种是堆内存。
Stack:翻译为栈或堆栈,指的就是一种后进先出的数据结构。
Heap :堆,堆是一个无序的结构。
Stack有时候翻译成堆栈,是因为heap是stack的组成单元。
堆是一个运行时数据区,对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式地释放。堆是由垃圾回收来负责的.
堆的
优点:可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收 集器会自动收走这些不再使用的数据。
堆的
缺点:由于要在运行时动态分配内存,存取速度较慢。
栈是用来存放一些原始数据类型的局部变量数据和对象的引用(String、数组、对象等等)但不存放对象内容。存放一些基本类型的变量数据(int,short,long,byte,float,double,boolean,char)和对象引用。
引用在白皮书中直接指出是实际就是一个C的"指针"。
栈的
优点:存取速度比堆要快,仅次于寄存器,(不是寄存器)。栈数据可以共享。
栈的
缺点:是,存在栈中的数据大小与生存期必须是 确定的,缺乏灵活性。
总结.
栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
堆:存放所有new出来的对象。
分享到:
相关推荐
堆与栈的区别(非常经典),总结的非常全面,共6页!
区别Java中堆与栈区别Java中堆与栈区别Java中堆与栈区别Java中堆与栈区别Java中堆与栈区别Java中堆与栈区别Java中堆与栈区别Java中堆与栈
堆与栈的区别.txt 堆与栈的区别.txt 堆与栈的区别.txt 堆与栈的区别.txt 堆与栈的区别.txt 堆与栈的区别.txt 堆与栈的区别.txt
很多初学者分不清常量,堆与栈,数组与指针的区别,本代码从程序本质上讲解。
讲述C语言的内存分配中,堆与栈的概念,以及如何在编程中规划堆与栈的设计
堆与栈的区别 堆与栈的区别 堆与栈的区别 堆与栈的区别
详尽的堆与栈的区别与深入.txt详尽的堆与栈的区别与深入.txt详尽的堆与栈的区别与深入.txt
堆与栈的关系,及详细区别。还有就是,堆和栈的细节。。
C语言程序编译的内存分配,堆与栈的区别 C语言程序编译的内存分配,堆与栈的区别 C语言程序编译的内存分配,堆与栈的区别
BSS段、数据段、代码段、堆与栈
堆与栈的区别的详细说明,大家可以从中明白,堆栈的区别
深度剖析堆与栈.doc 深度剖析堆与栈.doc
堆与栈PPT课件.pptx
堆与栈学习教案.pptx
堆与栈PPT学习教案.pptx
Java中堆与栈的内存分配
Java的堆是一个运行时数据区,对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式地释放···
Java中堆与栈的区别.pdf