引自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)有什么区别
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中的垃圾回收机制的相关介绍,需要的可以参考一下
在一些平台上,在有些情况下,javacore也被称为javadump,它包含jvm和应用程序相关的在特定时刻的一些诊断信息,如操作系统,应用程序环境,线程,native stack本地堆,锁,和内存的信息。在生成heapdump文件的时候...
绍深入Java虚拟机:JVM中的Stack和Heap
【基础】11、heap 和stack 有什么区别?【基础】12、Math.round(11.5) 等于多少? Math.round(-11.5)等于多少? 【基础】23、String 和StringBuffer 的区别? 【基础】31、java 中会存在内存泄漏吗,请简单描述。...
什么是线程和进程? **进程与线程的区别? 什么是TreeMap 如何停止一个正在运行的线程?... 解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法。 多线程同步有哪几种方法? 什么是自旋?
2. stack:存放基本类型的数据和对象的reference,但对象本身不存放在stack中,而是存放在Heap中 3. Heap:存放用new产生的数据 4. Static storage:存放在对象中用static定义的静态成员 5. Constant storage:...
栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
Java2023年最新高级面试题及答案,企业真面试题.md 免费下载,不需要积分 **进程与线程的区别? 什么是TreeMap ... 解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法。 多线程同步有哪几种方法?
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 ...
1.尽量使用final修饰符。 带有final修饰符的类是不可派生... 调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。其他变量,如静态变量,实例变量等,都在堆(Heap)中创建,速度较慢。
String和他们的区别你从首字母就能看出来了,String的首字母是大写,因为它是一个类,String和8种基本类型的包装类都属于类基本数据类型(primitive)的引用和引用所指的对象都存储在栈(stack)中, 而其他类型(object...
26、heap和stack有什么区别。 19 27、GC是什么? 为什么要有GC? 20 28、什么是内部类?分为哪几种? 20 29、为什么需要内部类? 20 30、内部类可以引用它的包含类的成员吗?有没有什么限制? 21 31、Anonymous Inner ...
11、heap 和stack 有什么区别? 9 12、Math.round(11.5) 等于多少? Math.round(-11.5)等于多少? 9 13、swtich 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上? 9 14、编程题: 用最有效率的方法算...
76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的优点和原理。并考虑2种回收机制。 52 79、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机...
76、heap和stack有什么区别。 52 77、GC是什么? 为什么要有GC? 52 78、垃圾回收的优点和原理。并考虑2种回收机制。 52 79、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机...
主要介绍Runtime Data Area,包括Java Stack,Native Method Stack, Program Counter Register,Method Area以及Heap 还简要介绍了Runtime Data Area周边的模块,包括Class Loader,Execution Engine,Native ...
9、解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法。 10、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少? 11、switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上? ...