Java 堆和栈的区别,还傻傻分不清?
发布日期:2021-06-30 12:49:35
浏览次数:2
分类:技术文章
本文共 939 字,大约阅读时间需要 3 分钟。
Java技术栈
www.javastack.cn
关注阅读更多优质文章
作者:nnngu
地址:https://www.cnblogs.com/nnngu/p/8300761.html
堆和栈都是用来在RAM中存放数据的地方。
堆
1)这些对象通过new等指令建立,通过垃圾回收器来销毁。
2)堆的优势是可以动态地分配内存空间,需要多少内存空间不必事先告诉编译器,因为它是在运行时动态分配的。但缺点是,由于需要在运行时动态分配内存,所以存取速度较慢。
栈
1)栈中主要存放一些基本数据类型的变量(byte,short,int,long,float,double,boolean,char)和对象的引用。
2)栈的优势是,存取速度比堆快,栈数据可以共享。但缺点是,存放在栈中的数据占用多少内存空间需要在编译时确定下来,缺乏灵活性。
举例说明栈数据可以共享
String 可以用以下两种方式来创建:
String str1 = new String("abc");String str2 = "abc";
下面用代码说明上面的理论:
public static void main(String\[\] args) { String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1 == str2);}
输出结果为:false
public static void main(String\[\] args) { String str1 = "abc"; String str2 = "abc"; System.out.println(str1 == str2);}
输出结果为:true
因此,用第二种方式创建多个“abc”字符串,在内存中其实只存在一个对象而已。这种写法有利于节省内存空间。同时还可以提高程序的运行速度,因为JVM会自动根据栈中数据的实际情况来决定是否创建新对象。
最近热文:
1、
2、
3、
4、
5、
6、
7、
8、
9、
10、
扫码关注Java技术栈公众号阅读更多干货。
点击「」获取面试题大全~
转载地址:https://javastack.blog.csdn.net/article/details/107240995 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月14日 18时10分06秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Java习题】 -- 设计⼀个⽅法,将⼀个字符串中的⼤⼩写字⺟翻转
2019-05-01
【大数据开发】Java基础-总结1-可变参数的注意点
2019-05-01
【Java习题】 -- 设计⼀个⽅法,将⼀个数组中的元素倒序排列(注意,不是降序)
2019-05-01
【Java习题】(难)设计⼀个⽅法,找出⼀个整型数组中的第⼆⼤的值
2019-05-01
【Java习题】-- 已知⽅法 public static int[] combine(int[] arr1, int[] arr2) 的作⽤是,合并 两个数组,并对合并后的数组进⾏升序排序
2019-05-01
【Java习题】(难)已知⽅法 public static int[] delete(int[] arr, int ele) 的作⽤是删除数组中第 ⼀次出现的ele元素,并返回删除后的数组
2019-05-01
【大数据开发】Java基础-总结2-面向对象与面向过程的区别
2019-05-01
【大数据开发】Java基础-总结3-面向对象的特点和注意点
2019-05-01
MySQL5.7版本修改了my.ini配置文件后mysql服务无法启动问题
2019-05-01
【大数据开发】Java基础 -总结21-Hashmap和HashTable的区别
2019-05-01
MySQL中关于decimal与double字段类型的区别
2019-05-01
webview加载网页或富文本oom
2019-05-01
机器学习-评价分类、回归算法模型指标
2019-05-01
Azkaban体系结构
2019-05-01
Azkaban2.5环境搭建及测试
2019-05-01
Synchronized与ReentrantLock区别
2019-05-01
机器学习之重头戏-特征预处理
2019-05-01
synchronized底层实现及锁的升级、降级
2019-05-01