首先分清楚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!
http://android.blog.51cto.com/268543/50100/

JAVA Stack栈和Heap堆的区别(转)相关推荐

  1. [Java]Stack栈和Heap堆的区别(终结篇)[转]

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

  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. java中栈和堆都存哪些东西_java中栈内存与堆内存(JVM内存模型)

    java中栈内存与堆内存(JVM内存模型) Java中堆内存和栈内存详解1 和 Java中堆内存和栈内存详解2 都粗略讲解了栈内存和堆内存的区别,以及代码中哪些变量存储在堆中.哪些存储在栈中.内存中的 ...

最新文章

  1. Sql Server数据库数据导入到SQLite数据库中
  2. 大数据学习——sparkRDD
  3. idea调试怎么跳出循环_使用IDEA的Debug调试功能,查看程序的运行过程
  4. hdu 1003 Max Sum
  5. CSV格式数据如何导入MySQL?
  6. 页面重构-让我们的布局自适应
  7. typescript箭头函数参数_Typescript 入门基础篇(一)
  8. 百度百科推广大师 v1.7.6.1
  9. Unity导入3D模型的过程与方法
  10. 分享40佳非常有创意的社交网络图标集
  11. 关于计应151/152《软件工程》课程实践的安排
  12. 上海电力学院linux大作业,上海电力电路大作业2重点.docx
  13. 不同VPC路由器通过静态路由、动态路由(OSPF)实现网络互通实战
  14. 为什么要使用Iocomp控件?
  15. 根据 ”艾宾浩斯遗忘曲线“复习时间点生成的复习计划模板
  16. python函数算面积_面积函数python
  17. XXL-JOB漏洞解决,Eclipse Jetty HTTP请求走私漏洞
  18. 一文学会快速傅里叶变换(FFT)
  19. 华为云内网DNS地址大全(不同区域DNS地址)
  20. 【案例1】图书馆管理系统毕业论文

热门文章

  1. 从物理服务器拷贝文件到容器,docker容器与物理机的文件传输—docker cp命令
  2. Codeforces Round #324 (Div. 2) B. Kolya and Tanya
  3. 《C++ Primer 第五版》(第5.1-5.6节) ——异常处理机制(try语句块,throw表达式和catch异常捕捉处理单元)
  4. 排序(Sort)--【一】
  5. C++ JSON库:JSON for Morden C++
  6. java script简介
  7. 02-线性结构2 一元多项式的乘法与加法运算 (20 分)
  8. select、poll、epoll优缺点
  9. 函数setjump和longjmp
  10. Linux02进程内存管理