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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:面试问到 Redis 事务,我脸都绿了。。
下一篇:Spring零配置之@Configuration注解详解

发表评论

最新留言

第一次来,支持一个
[***.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
Exception in thread “main“ java.sql.SQLException错误之一: Column Index out of range, 0 < 1. 2019-05-01
C3p0连接池连接mysql出现: com.mchange.v2.resourcepool.BasicResourcePool 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