java中的 heap 和 stack 的区别 ?java中 堆和栈的区别??

java 内存分为两种,即堆和栈,也就是heap 和stack 。

栈内存是当一个程序进入方法时会为这个方法单独分一块私属存储空间,用于存储这个方法的内部变量。当这个方法结束时,分给这个方法的栈存储空间就会被释放,栈内部的变量也会被释放。

堆是与栈不同的内存,一般用于存放不在当前方法栈中的那些数据。例如:使用new创建的对象都放在堆里面,所以,它不会随着方法的结束而消失。方法中的局部变量,如果使用了final修饰后也是放在堆中,而不是放在栈中。

简单的来说就是:在函数中定义的一些基本类型的变量和对象引用变量都在在函数的栈内存中分配。

堆内存是用来存放new创建的对象和数组,以及final修饰的变量,堆中分配的内存由jvm自动垃圾回收器来负责管理。

你可能感兴趣的:(java)