java 栈回收_Java基础必备 -- 堆栈、引用传值、垃圾回收等

在Java中,对象作为函数参数的传递方式是值传递还是引用传递?String str = "abc" 与 String str = new String("abc")在存储上有何区别?想成为一名合格的搬砖工,掌握吧,颤抖吧!

堆(heap)和栈(stack)

在数据结构中存在堆和栈,在内存分配中也有堆和栈的概念,指的是堆空间和栈空间,注意不要将两者混为一谈,这里要讨论的是后者。

在数据结构中,堆和栈是两种不同的数据结构。栈是一种后进先出的线性表,堆是一种特殊的完全二叉树,树中所有非终端结点的值均不大于(或不小于)其左右孩子结点的值。

在内存分配中,栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。在C++中,程序员可以通过malloc函数申请堆空间,但在Java中,程序员不能直接地操作堆与栈,只能由Java自动管理。

栈的优势:① 存取速度比堆要快,仅次于直接位于CPU中的寄存器;② 栈数据可以共享。存在栈中的数据大小与生存期必须是确定的,缺乏一定灵活性。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。

一个经典的关于堆和栈的比喻:使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。

Java两种数据类型与存储

Java有两种数据类型:① 一种是基本数据类型,共8种,即int、short、long、byte、float、double、boolean、char(注意不包含string数据类型);② 另一种是对象数据类型,是类类型或应用数据类型,如Integer、String、Double等。

原文:http://www.cnblogs.com/hanganglin/p/4341854.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值