java学习之堆与栈的区别

Posted dreamy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习之堆与栈的区别相关的知识,希望对你有一定的参考价值。

一、栈

1.消失的方式不同:方法变量随着栈方法的释放而释放

2.存储的位置不同,默认复制的处理机制不同:不会给方法的属性附初值,可以理解为类中的方法中的属性为局部变量,无法给局部变量附初值,类的状态由类的成员变量的值来体现,所以称类是有状态的对象,而方法中的变量不能默认附初值,则属于无状态,而且存储的空间是在栈方法区内。

二、堆

1.成员变量不会随着没有引用的存在而消失,会等着jvm的垃圾回收装置来回收,即jvm的gg

2.对实例化的对象的成员属性附初值

3.只要是new的,内存会开辟新的空间

4.擦除引用,即使引用名为null,如下:

package com.dreamly.day01;

/**
 * @author dreamly
 *
 */
public class ArrayTest01 {
    public static void main(String[] args) {
        int[] x=new int[3];
        x[0]=2;
        x=null;//擦除掉与实例对象的联系,即不保存地址值。
    }
}

 

以上是关于java学习之堆与栈的区别的主要内容,如果未能解决你的问题,请参考以下文章

让你彻底明白JAVA中堆与栈的区别

堆与栈的区别

简单总结:堆与栈的区别

java中的堆与栈

c++堆与栈的简单认识

STM32的堆与栈与编译信息查看