java 栈和堆区别详细介绍
这里有新鲜出炉的 Java 设计模式, 程序狗速度看过来!
Java 程序设计语言
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言, 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台 (即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se)) 的总称
这篇文章主要介绍了 java 栈和堆区别详细介绍的相关资料, 需要的朋友可以参考下
java 栈和堆区别
1, 垃圾回收机制仅仅作用于堆内存, 与栈内存无关;
2, 栈: stack 栈的存取速度比堆快, 效率高 保存局部变量和对象的引用值
3, 堆: 保存较大的变量
4, 栈有一个很重要的特殊性, 就是存在栈中的数据可以共享
编译器处理 int a = 3 时, 首先会在栈中创建一个变量为 a 的引用, 然后查找栈中是否存在 3 这个值, 如果不存在, 就将 3 存放进来;
处理 b = 3 时, 也是这样, 因为之前将 3 存放进来了, 所以此时编译器只需将创建 b 这个变量再指向 3 就行了(有利于节省空间)
这个时候就出现 a 和 b 同时指向 3 的情况, 但不影响他们的使用如果此时又定义 a = 4;, 则需将 4 存放进内存, 由 a 指向 4,a 值的修改不会影响到 b 值
内存的划分:
1, 寄存器
2, 本地方法区
3, 方法区
4, 栈内存
存储的都是局部变量
而且变量所属的作用域一旦结束, 该变量就自动释放
5, 堆内存
存储是数组和对象(其实数组就是对象) 凡是 new 建立在堆中
特点:
1, 每一个实体都有首地址值
2, 堆内存中的每一个变量都有默认初始化值, 根据类型的不同而不同整数是 0, 小数 0.0 或者 0.0f,boolean false char '\u0000'
3, 垃圾回收机制
来源: http://www.phperz.com/article/18/0211/359093.html