浅谈堆栈的区别
堆栈在计算机中是两种不同的数据结构:堆是队列优先,先进先出(FIFO);栈是先进后出(LIFO)的;
堆栈空间分配
堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
堆栈缓存方式
栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。
堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
堆栈数据结构区别
堆(数据结构):堆可以被看成是一棵树,如:堆排序。
栈(数据结构):一种先进后出的数据结构。
在java中
java是一种自动分配内存和垃圾回收的语言,这一切都是在 jvm中进行的自动操作;java的设计者将jvm的内存结构划分为多个不同的内存区,每一个内存区都拥有各自的用途,都会负责储存各自的数据类型;
JVM的内存分区如下图:
java 堆区:
是内存回收的主要区域,主要存放的是对象和数组的实例;
方法区:
方法区仅仅是逻辑上的独立,实际上还包含着唉java堆区中;里面存储每一个类的结构信息,比如:运行时常量池、字段和方法数据、构造函数和普通方法的字节码内容以及类、实例、接口初始化时需要用到的特殊方法等数据;
运行时常量池:
属于方法区中的一部分,运行时常量池就是字节码文件中常量池表的运行时表示形态;
java栈区 :
存储的是局部变量、对象引用和returnAddress类型;
PC寄存器:
是对物理 PC寄存器的一种抽象模拟,是线程私有的,生命周期与线程的生命周期保持一致;如果当前线程所执行的方法是一个java方法,那么PC寄存器就会存储正在执行的字节码的指令地址,如果是native方法,PC寄存器的值就为空;
本地方法栈:
用于支持本地方法的执行;
相关推荐
c++中堆、栈的详细说明,以及它们之间的区别。
堆栈内存区别。
栈和堆栈的区别 内存管理 必读 栈和堆栈的区别.doc
Thread Dump 是非常有用 Java应用问题的工具。每一个 Java 虚拟机 都有及时生成所有线程在某...照,及JVM 中所有 Java线程的堆栈跟踪信息,堆栈信息一般包含完整的类名 及所执行的方法,如果可能的话还有源代码的行数。
队列,堆,栈吗,堆栈的区别,对java的学习很有帮助
栈和堆栈的区别,这一点很重要,希望对大家有用
很多时候我们在变成的时候会涉及到堆栈的问题,本资源主要对堆和栈进行区分,加以了解
教你识别背照式和堆栈式摄像头元件的区别,两者区别可大
线性表、堆栈、队列实现源码,C++实现,如果有问题请大家给我留言http://blog.csdn.net/tiandixuanwuliang
堆和栈是两个不同的概念 堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个...虽然堆栈,堆栈的说法是连起来叫,但是他们还是有很大区别的,连着叫只是由于历史的原因。
文档中详细描述C++中内存分配方式及堆和栈的区别
对堆栈的概念进行详细的分析,详细解释堆与栈的区别,适合于对堆栈概念分不清楚的同学
堆和栈的区别 堆和栈的区别 堆和栈的区别
比较局部变量、全局变量、堆、堆栈、静态和全局的区别和联系。
堆和栈的区别,详细介绍了堆和栈的区别并介绍了他们的用法和弊端
详细阐述了堆和栈的分配和使用原理。详见文档。
背照式和堆栈式摄像头的区别.docx