首先分清楚Stack,Heap的中文翻译:Stack—栈,Heap—堆。
在中文里,Stack可以翻译为“堆栈”,所以我直接查找了计算机术语里面堆和栈开头的词语:
堆存储: heapstorage    堆存储分配: heapstorage allocation  堆存储管理: heap storage management
 栈编址: stack addressing   栈变换:stack transformation  栈存储器:stack memory  栈单元: stack cell
接着,总结在Java里面Heap和Stack分别存储数据的不同。
             Heap(堆)       Stack(栈)
 JVM中的功能      内存数据区                    内存指令区
 存储数据      对象实例(1)  基本数据类型, 指令代码,常量,对象的引用地址(2)
1. 保存对象实例,实际上是保存对象实例的属性值,属性的类型和对象本身的类型标记等,并不保存对象的方法(方法是指令,保存在stack中)。
   
   对象实例在heap中分配好以后,需要在stack中保存一个4字节的heap内存地址,用来定位该对象实例在heap中的位置,便于找到该对象实例。
2. 基本数据类型包括byte、int、char、long、float、double、boolean和short。
    函数方法属于指令.
=======================       
引用网上广泛流传的“Java堆和栈的区别”里面对堆和栈的介绍;
          "Java 的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。"
        “栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。 
   
         可见,垃圾回收GC是针对堆Heap的,而栈因为本身是FILO - first in, last out. 先进后出,能够自动释放。 这样就能明白到new创建的,都是放到堆Heap!

本文出自 “学习Android” 博客,请务必保留此出处http://android.blog.51cto.com/268543/50100

本文转自天天_byconan博客园博客,原文链接:http://www.cnblogs.com/tiantianbyconan/archive/2012/12/26/2834754.html,如需转载请自行联系原作者

[Java]Stack栈和Heap堆的区别(终结篇)[转]相关推荐

  1. JAVA Stack栈和Heap堆的区别(转)

          首先分清楚Stack,Heap的中文翻译:Stack-栈,Heap-堆. 在中文里,Stack可以翻译为"堆栈",所以我直接查找了计算机术语里面堆和栈开头的词语:  堆 ...

  2. js stack栈与heap堆的区别与含义

    作为前端了解栈与堆是非常必要的,如果不能充分理解那么js的深拷贝.浅拷贝就没办法正确使用. 当然如果你是大学计算机专业相信你因该了解很透彻了,如果文章有不足之处请多多指教 一.栈与堆概念 栈(stac ...

  3. 如何给女朋友讲明白:Java中Stack(栈)与Heap(堆)

    背景 Java中Stack(栈)与Heap(堆)是面试中被经常问到的一个话题. 有没有对Java中Stack(栈)与Heap(堆)烂熟于心的童鞋,请举手!!!(怎么没人举手-) 这个时候蜗牛哥的对象弱 ...

  4. java内存stack heap_java内存解析-------stack(栈)和heap(堆)的理解

    学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈". 理解这个概念,对于理解程序的运行至关重要.容易混淆的是,这个词其实有三种含义,适用于不同的场合,必须加以区分. ...

  5. 栈内存 ,堆内存区别 C++ 动态内存 == 与equal区别 复合函数奇偶性 三角函数转换公式: 虚函数和纯虚函数: C++ 中的运算符重载 数据封装,数据抽象 C++ 接口(抽象类

    目录 栈内存 ,堆内存区别 C++ 动态内存 == 与equal区别 复合函数奇偶性 三角函数转换公式: 虚函数和纯虚函数: C++ 中的运算符重载 数据封装,数据抽象 C++ 接口(抽象类): #和 ...

  6. C++中栈内存和堆内存区别

    C++中栈内存和堆内存区别 栈内存:当对象** 所在的函数体**执行完毕时,栈内存里的数据就会被清理.如:Student std;(是栈内存) 堆内存:会一直存在,执行delete是会清楚.如果是指针 ...

  7. JavaScript栈内存和堆内存区别

    和栈这两个字我们已经接触多很多次,那么具体是什么存在栈中什么存在堆中呢?就拿JavaScript中的变量来说: 首先JavaScript中的变量分为基本类型和引用类型. 基本类型就是保存在栈内存中的简 ...

  8. Java Stack栈类详解

    栈是Vector的一个子类,它实现了一个标准的后进先出的栈. 堆栈只定义了默认构造函数,用来创建一个空栈. 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法. Stack() 除了由V ...

  9. 01 - Java并发编程与高并发解决方案笔记-基础篇

    01 - Java并发编程与高并发解决方案笔记-基础篇 基础篇很重要!很重要!很重要!!!一定要理解和认真思考. 01 - Java并发编程与高并发解决方案笔记-基础篇 1.课程准备 2.并发编程基础 ...

最新文章

  1. 个人博客三|首页后台开发
  2. 『HTML5制造仿JQuery作用』减速
  3. java 文件路径表达式_Java基础(二十二) Lambda表达式和File类
  4. java录入会员信息_java-第三章-升级我行我素购物管理系统,实现会员信息录入的功能...
  5. SQL Server 连接字符串
  6. Delphi中的堆,栈
  7. xNFT Protocol完成天使轮和A轮融资,LD Capital、Fundamental Labs分别领投
  8. Loadrunner中web_reg_save_param的使用详解
  9. 纯干货!如何做一个成功的大数据项目
  10. 1进程 ppid_Python每日3题什么是僵尸进程和孤儿进程?
  11. 如何在csdn网站搜索自己写的博客文章
  12. safari快捷图标不见了_桌面图标不见了怎么办?这里有妙招
  13. 一种很强的对联,看了让我想起高中时期那会儿对中文的崇拜!
  14. OpenHarmony短信验证码及倒计时实现
  15. win10 系统 chrome内核浏览器 微软雅黑字体难看的解决方法
  16. 20220624 登录和代理ip
  17. 三菱触摸屏与三菱L系类PLC以太网通讯
  18. 解决IE浏览器不支持es6语法Promise
  19. python numpy 实现与(and),非与(not),或(or),异或(xor)逻辑运算!
  20. ik与拼音分词器,拓展热词/停止词库

热门文章

  1. jquery插件Loadmask
  2. 说说设计模式~组合模式(Composite)
  3. Router OS之禁止P2P下载
  4. ios cpu指令架构
  5. 自加计数器c语言程序,计数器 加1 C语言 程序.doc
  6. C#游戏开发快速入门 2.1 构建游戏场景
  7. vue 解决跨域 调试_Electron-vue解决跨域
  8. python脚本控制手机app_Python+Appium学习之启动手机APP或者浏览器
  9. 内存屏障linux,Linux内存屏障
  10. php 怎么写个定时自理器,教你编写更加稳定、可读性强的JavaScript代码的示例