码迷,mamicode.com
首页 > 编程语言 > 详细

java学习之堆与栈的区别

时间:2017-12-13 02:19:05      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:pre   内存   col   默认   而且   string   day01   array   day   

一、栈

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学习之堆与栈的区别

标签:pre   内存   col   默认   而且   string   day01   array   day   

原文地址:http://www.cnblogs.com/zhaohuan1996/p/8030276.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!