美文网首页
J2SE:小议堆(heap)和栈(stack)

J2SE:小议堆(heap)和栈(stack)

作者: 尼古拉斯_富貴 | 来源:发表于2017-07-28 15:58 被阅读0次

以前的面试中偶尔会被问起这个,当时回答的也是支支吾吾。有点惭愧,so,今天来认真学习一番。

栈:(运行时单位)

一些基本类型的变量对象的引用都是保存在栈中,当变量或者对象的引用出了作用域就会自动释放。

{                           
     int a = 99;            
}                           

以上代码中,定义了一个int型变量a并给它赋初值,大括号范围内为a的作用域,当代码运行完该段作用域后,会自动释放掉为a分配的内存空间。

堆:(存储时单位)

通过new XXX()方式创建的对象保存在堆中(字符串常量、基本数据类型常量保存在常量池中

{                           
     Music myMusic = new Music();            
}                           

以上代码会同时分配两块内存,对象引用myMusic保存在栈中,对象Music保存在堆中。

当程序运行完new Music()的代码后,该段代码的作用域就已经结束了,但是该对象仍然占据着内存,在随后的一个不确定的时候被垃圾回收器回收掉。

补充

如果栈内存不够,JVM会抛出java.lang.StackOverFlowError。
而如果是堆内存不够,JVM会抛出java.lang.OutOfMemoryError。

相关文章

  • J2SE:小议堆(heap)和栈(stack)

    以前的面试中偶尔会被问起这个,当时回答的也是支支吾吾。有点惭愧,so,今天来认真学习一番。 栈:(运行时单位) 一...

  • 关于JS的堆和栈的理解

    一、堆(heap)和栈(stack) 栈(stack)会自动分配内存空间,会自动释放。堆(heap)动态分配的内存...

  • 理解js里堆和栈的意义

    一、 堆(heap)和栈(stack) 栈(stack)会自动分配内存空间,会自动释放。堆(heap)动态分配的内...

  • 【Javascript】探究javascript中的堆/栈/任务

    堆/栈/队列 在javascript中,存在调用栈 (call stack)和内存堆(memory heap) ,...

  • 堆(heap)和栈(stack)

    从字面来讲 堆:就想象成:堆在一起的东西,需要我们自己去整理。栈:就想象成:客栈,上下班准时,有规律,不用住宿的游...

  • 二、JavaScript 中的堆内存和栈内存

    1 栈 stack”和“堆 heap” 简单的来讲,stack上分配的内存系统自动释放,heap上分配的内存,系统...

  • 堆栈

    栈 (stack)和 堆 (heap) stack 为自动分配的内存空间,它由系统自动释放;而heap则是动态分...

  • js/jquery 学习笔记

    理解JavaScript中的堆和栈 这里先说两个概念:1、堆(heap)2、栈(stack)堆是堆内存的简称。栈是...

  • JS基础篇-基础数据类型

    一、栈(stack)和堆(heap) stack 为自动分配的内存空间,它由系统自动释放;heap 则是动态分配的...

  • stack(栈) and heap(堆)

    本文参考了JAVA中Stack和Heap的区别 首先将所有的variable分成三类第一类 基本类型(primit...

网友评论

      本文标题:J2SE:小议堆(heap)和栈(stack)

      本文链接:https://www.haomeiwen.com/subject/ketflxtx.html