堆栈的区别_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 堆栈的区别

堆栈的区别

 2017/11/27 12:50:42  陶永攀  程序员俱乐部  我要评论(0)
  • 摘要:浅谈堆栈的区别堆栈在计算机中是两种不同的数据结构:堆是队列优先,先进先出(FIFO);栈是先进后出(LIFO)的;堆栈空间分配栈(操作系统):由操作系统自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。堆(操作系统):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。堆栈缓存方式栈使用的是一级缓存,他们通常都是被调用时处于存储空间中,调用完毕立即释放。堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定
  • 标签:区别 堆栈

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 浅谈堆栈的区别

? ? ? ? ? ?堆栈在计算机中是两种不同的数据结构:堆是队列优先,先进先出(FIFO);栈是先进后出(LIFO)的;

class="title-text" style="margin-bottom: 0px; font-size: 18px; color: #333333; font-weight: 400;">堆栈空间分配

栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。

堆栈缓存方式

栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。 堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。

堆栈数据结构区别

堆(数据结构):堆可以被看成是一棵树,如:堆排序。 栈(数据结构):一种先进后出的数据结构。

在java中

? ? ? ? java是一种自动分配内存和垃圾回收的语言,这一切都是在 jvm中进行的自动操作;java的设计者将jvm的内存结构划分为多个不同的内存区,每一个内存区都拥有各自的用途,都会负责储存各自的数据类型;

? ? ? ?JVM的内存分区如下图:



java 堆区:

? ? ? ?是内存回收的主要区域,主要存放的是对象和数组的实例;

方法区:

? ? ? ?方法区仅仅是逻辑上的独立,实际上还包含着唉java堆区中;里面存储每一个类的结构信息,比如:运行时常量池、字段和方法数据、构造函数和普通方法的字节码内容以及类、实例、接口初始化时需要用到的特殊方法等数据;

?

运行时常量池:

? ? ? ?属于方法区中的一部分,运行时常量池就是字节码文件中常量池表的运行时表示形态;

?

java栈区 :

? ? ? ?存储的是局部变量、对象引用和returnAddress类型;

?

PC寄存器:

? ? ? 是对物理 PC寄存器的一种抽象模拟,是线程私有的,生命周期与线程的生命周期保持一致;如果当前线程所执行的方法是一个java方法,那么PC寄存器就会存储正在执行的字节码的指令地址,如果是native方法,PC寄存器的值就为空;

?

本地方法栈:

? ? ? 用于支持本地方法的执行;

  • 大小: 21.7 KB
  • 查看图片附件
发表评论
用户名: 匿名