变量是放在了堆内存还是栈内存

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量是放在了堆内存还是栈内存相关的知识,希望对你有一定的参考价值。

变量分为静态变量、动态变量。
静态变量在操作系统装载程序时分配固定的数据空间;
程序运行期间的动态变量占用堆内存;
子程序内部定义的变量一般占用栈空间。
参考技术A 栈是存放变量的地方,堆是存放变量值(引用)的地方。 参考技术B 存放在栈。

heap与stack的区别

java 的内存分为两类,一类是栈内存,一类是堆内存。栈内存是指程序进入一个方法时,
会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法
结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。
堆是与栈作用不同的内存,一般用于存放不放在当前方法栈中的那些数据,例如,使用 new
创建的对象都放在堆里,所以,它不会随方法的结束而消失。 方法中的局部变量使用 final
修饰后,放在堆中,而不是栈中。
 
 
 
 
区别:
1.heap是堆,stack是栈。

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

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

Java中,

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

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

4.举例:

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

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

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

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

以上是关于变量是放在了堆内存还是栈内存的主要内容,如果未能解决你的问题,请参考以下文章

java里的静态变量是放在了堆内存还是栈内存

java里的静态成员变量是放在了堆内存还是栈内

java里的静态成员变量是放在了堆内存还是栈

java类中成员变量初始化后存放在堆内存中还是栈内存中?

c++中数组和对象的数据是存储在栈内存还是堆内存?

C 语言内存四区原理 ( 栈内存属性增长方向 | 栈内存开口方向 | 代码示例 )