Heap和Stack的区别

2021年09月15日 阅读数:1
这篇文章主要向大家介绍Heap和Stack的区别,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

个人答案:html

1.栈是用来存放基本类型的变量和引用类型的变量,堆用来存放new出来的对象和数组。数组

2.栈的存取速度快,但不灵活。堆的存取速度慢,可是存取灵活,空间动态分配。spa

3.栈在创建在连续的物理位置上,而堆只须要逻辑位置连续便可。操作系统

4.堆是JVM运行时最大的内存区域。htm

巨佬的答案:对象

Java的内存分为两类,一类是栈内存,一类是堆内存。栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。blog

堆是与栈做用不一样的内存,通常用于存放不放在当前方法栈中的那些数据,例如,使用new建立的对象都放在堆里,因此,它不会随方法的结束而消失。方法中的局部变量使用final修饰后,放在堆中,而不是栈中。内存

1.heap是堆,stack是栈。class

2.stack的空间由操做系统自动分配和释放,heap的空间是手动申请和释放的,heap经常使用new关键字来分配变量

3.stack空间有限,heap的空间是很大的自由区。

在Java中,

若只是声明一个对象,则先在栈内存中为其分配地址空间,

若再new一下,实例化它,则在堆内存中为其分配地址。

4.举例:

数据类型 变量名;这样定义的东西在栈区。

如:Object a =null; 只在栈内存中分配空间

new 数据类型();或者malloc(长度); 这样定义的东西就在堆区

如:Object b =new Object(); 则在堆内存中分配空间

 

参考资料:http://www.cnblogs.com/perfy/archive/2012/09/06/2672946.html