`
uag
  • 浏览: 19241 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

java 中 heap 和stack 的区别

    博客分类:
  • JAVA
阅读更多
引自http://space.jinghua.cn/html/84/10184-5929.html

总结在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
分享到:
评论

相关推荐

    java中堆(heap)和堆栈(stack)有什么区别

    java中堆(heap)和堆栈(stack)有什么区别

    Java基础知识点 - 内容比较全面

    1.8 Java中Heap与Stack的区别 1.9 Java中String和StringBuffer的区别 1.10 Java中Comparable和Comparator实现对象比较 1.11 Java中的JNDI (Java命名与目录接口) 1.12 Java事件处理机制与“恋爱关系” 1.13 ...

    深入Java虚拟机中的Stack和Heap

    深入介绍Java虚拟机中的Stack和Heap

    基于java中stack与heap的区别,java中的垃圾回收机制的相关介绍

    本篇文章小编将为大家介绍,基于java中stack与heap的区别,java中的垃圾回收机制的相关介绍,需要的可以参考一下

    IBM heapdump analyzer

    在一些平台上,在有些情况下,javacore也被称为javadump,它包含jvm和应用程序相关的在特定时刻的一些诊断信息,如操作系统,应用程序环境,线程,native stack本地堆,锁,和内存的信息。在生成heapdump文件的时候...

    深入Java虚拟机:JVM中的Stack和Heap

    绍深入Java虚拟机:JVM中的Stack和Heap

    最全面Java面试题,从corejava到javaWeb共180多题(含答案)

    【基础】11、heap 和stack 有什么区别?【基础】12、Math.round(11.5) 等于多少? Math.round(-11.5)等于多少? 【基础】23、String 和StringBuffer 的区别? 【基础】31、java 中会存在内存泄漏吗,请简单描述。...

    Java2023年京东最新高级面试题,中级面试题,大汇总.txt

    什么是线程和进程? **进程与线程的区别? 什么是TreeMap 如何停止一个正在运行的线程?... 解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法。 多线程同步有哪几种方法? 什么是自旋?

    Java编程思想读书笔记.rar

    2. stack:存放基本类型的数据和对象的reference,但对象本身不存放在stack中,而是存放在Heap中 3. Heap:存放用new产生的数据 4. Static storage:存放在对象中用static定义的静态成员 5. Constant storage:...

    java 栈和堆,Java自动管理栈和堆

    栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。

    Java2023年最新高级面试题及答案,企业真面试题.md 免费下载,不需要积分

    Java2023年最新高级面试题及答案,企业真面试题.md 免费下载,不需要积分 **进程与线程的区别? 什么是TreeMap ... 解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法。 多线程同步有哪几种方法?

    深入java虚拟机(inside the java virtual machine)

    Possible Implementations of the Java Stack Native Method Stacks Execution Engine The Instruction Set Execution Techniques Threads Native Method Interface The Real Machine Eternal Math: A ...

    java编程中影响性能的一些点

    1.尽量使用final修饰符。  带有final修饰符的类是不可派生... 调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。其他变量,如静态变量,实例变量等,都在堆(Heap)中创建,速度较慢。

    java面试题答案——面试经典

    String和他们的区别你从首字母就能看出来了,String的首字母是大写,因为它是一个类,String和8种基本类型的包装类都属于类基本数据类型(primitive)的引用和引用所指的对象都存储在栈(stack)中, 而其他类型(object...

    Java面试宝典2020修订版V1.0.1.doc

    26、heap和stack有什么区别。 19 27、GC是什么? 为什么要有GC? 20 28、什么是内部类?分为哪几种? 20 29、为什么需要内部类? 20 30、内部类可以引用它的包含类的成员吗?有没有什么限制? 21 31、Anonymous Inner ...

    java面试宝典

    11、heap 和stack 有什么区别? 9 12、Math.round(11.5) 等于多少? Math.round(-11.5)等于多少? 9 13、swtich 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上? 9 14、编程题: 用最有效率的方法算...

    Java面试宝典-经典

    76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的优点和原理。并考虑2种回收机制。 52 79、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机...

    Java面试宝典2010版

    76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的优点和原理。并考虑2种回收机制。 52 79、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机...

    Java虚拟机 JVM 内存结构介绍

    主要介绍Runtime Data Area,包括Java Stack,Native Method Stack, Program Counter Register,Method Area以及Heap 还简要介绍了Runtime Data Area周边的模块,包括Class Loader,Execution Engine,Native ...

    java笔试题

    9、解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法。 10、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少? 11、switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上? ...

Global site tag (gtag.js) - Google Analytics