zoukankan      html  css  js  c++  java
  • 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;//擦除掉与实例对象的联系,即不保存地址值。
        }
    }
  • 相关阅读:
    vue-cli3使用cdn引入
    修饰器
    go strconv
    【BZOJ 5125】小Q的书架
    【NOI 2009】诗人小G
    后缀数组
    点分治
    四边形不等式
    【NOIP 2015】Day2 T3 运输计划
    【NOIP 2016】Day1 T2 天天爱跑步
  • 原文地址:https://www.cnblogs.com/zhaohuan1996/p/8030276.html
Copyright © 2011-2022 走看看