堆栈区别java总结_堆栈的区别

堆栈区别java总结_堆栈的区别浅谈堆栈的区别 堆栈在计算机中是两种不同的数据结构 堆是队列优先 先进先出 FIFO 栈是先进后出 LIFO 的 class title text style margin bottom 0px font size 18px color 3

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

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

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

栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。

堆栈缓存方式

栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。

堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。

堆栈数据结构区别

堆(数据结构):堆可以被看成是一棵树,如:堆排序。

栈(数据结构):一种先进后出的数据结构。

在java中

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

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

8e6e2404ec1141bc1101785c10961f9e.png

java 堆区:

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

方法区:

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

?

运行时常量池:

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

?

java栈区 :

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

?

PC寄存器:

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

?

本地方法栈:

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

74cc3d7093203ccb1274656a1a851363.png

大小: 21.7 KB

查看图片附件

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223514.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午2:01
下一篇 2026年3月17日 下午2:02


相关推荐

  • giee 通过webhooks部署代码到服务器

    giee 通过webhooks部署代码到服务器bin bashcd www wwwroot xxx xxxxx comgitfetcha mastergitpul username xxx xxx gitmasternam index controller usethink facade Request classHooks publicfuncti

    2026年3月17日
    2
  • mount 命令介绍

    mount 命令介绍磁盘挂载可以有效解决数据同步与磁盘空间浪费的问题 而且支持不同操作系统之间挂载操作 核心命令为 mount 本文介绍该命令 挂载挂载常用的命令为 mount 其命令格式为 mount args devicedirarg 表示配置参数 其中最常用的为 t 和 o 参数 t 指定文件系统的类型 通常不必指定 mount 会自动选择正确的类型 常用类型有 iso9660 光盘或光盘镜像 msdos DOSfat16 文件系统 vfat Windows9xfat 文件系统 n

    2025年7月11日
    7
  • 智能体工作流

    智能体工作流

    2026年3月16日
    3
  • 博客帮助文档

    博客帮助文档博客积分规则博客等级C币规则(试运营)博客VIP说明(试运营)博客专家如何成为博客专家企业博客如何开通企业博客博客勋章分类专栏博客搬家自定义百度统计CSDN博客用户准则Markdown帮助博客积分规则博客积分是CSDN对用户努力的认可和奖励,也是衡量博客水平的重要标准。博客等级也将由博客积分唯一决定。积分规则具体如下:1、每发布一篇…

    2022年5月1日
    81
  • 什么是CSS sprites?

    什么是CSS sprites?简介 sssprites 直译过来就是 CSS 精灵 通常被解释为 CSS 图像拼合 或 CSS 贴图定位 其实就是通过将多个图片融合到一张图里面 然后通过 CSSbackgroun 背景定位技术技巧布局网页背景 为什么要使用 CSSsprites 这样做的好处也是显而易见的 因为图片多的话 会增加 http 的请求 无疑促使了网站性能的减低 特别是图片特别多的网站 如果能用 csssprites 降低图片

    2026年3月18日
    1
  • idea文档注释设置_eclipse添加方法注释模板

    idea文档注释设置_eclipse添加方法注释模板IDEA自带的注释模板不是太好用,我本人到网上搜集了很多资料系统的整理了一下制作了一份比较完整的模板来分享给大家,我不是专业玩博客的,写这篇文章只是为了让大家省事。这里设置的注释模板采用Eclipse的格式,下面先贴出Eclipse的注释模板,我们就按照这种格式来设置:类注释模板:…

    2022年10月12日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号