当前位置: 首页 > article >正文

Jvm中的堆和栈

JVM中的堆和栈分别存放不同的数据类型和内容。 

‌栈(Stack)‌:

    • 存储基本数据类型(如int, char, boolean等)和对象的引用。
    • 存储局部变量、方法调用、程序运行状态、方法返回值等。
    • 每个线程都有一个独立的线程栈,归属于单个线程,存储的变量只能在其所属线程中可见。
    • 如果栈内存没有足够的空间去存储方法调用和局部变量,JVM会抛出java.lang.StackOverFlowError。
    • 栈的大小可以通过JVM参数-Xss进行设置。 

‌堆(Heap)‌:

    • 主要用于存储对象信息,包括所有新创建的对象。
    • 堆内存中的对象可以被所有线程访问,是一块共享的内存区域。
    • 如果堆内存没有足够的空间去存储生成的对象,JVM会抛出java.lang.OutOfMemoryError。
    • 堆空间通过复杂的内存管理技术进行访问,包括年轻代、老年代和永久代。
    • 与栈不同,堆中的对象不会自动释放,需要垃圾回收器来释放未使用的对象,以保持内存使用效率。

堆和栈在JVM中扮演着不同的角色,堆主要负责对象的存储和管理,而栈则主要负责方法的执行和局部变量的存储。这种分离的思想使得Java的垃圾回收成为可能,同时也使得程序运行更加高效和灵活‌12。

堆结构:


http://www.kler.cn/a/370475.html

相关文章:

  • 31、【OS】【Nuttx】OSTest分析(1):stdio测试(一)
  • [Qt] Box Model | 控件样式 | 实现log_in界面
  • UDP 单播、多播、广播:原理、实践
  • 快速入门:如何注册并使用GPT
  • R语言的并发编程
  • Web端实时播放RTSP视频流(监控)
  • 微信小程序实现录音,播放录音功能
  • 面试域——岗位职责以及工作流程
  • React如何实现Vue的keepAlive功能
  • 深入了解 kotlinx-datetime:配置与使用指南
  • C++编写台达ME300变频器串口通讯实例
  • 语音提示器-WT3000A离在线TTS方案-打破语种限制/AI对话多功能支持
  • QT-使用QSS美化UI界面
  • Jenkins+RobotFramework 失败用例重执行方案
  • 高级java每日一道面试题-2024年10月22日-JVM篇-JVM堆栈概念,何时销毁对象?
  • 一二三应用开发平台自定义查询设计与实现系列2——查询方案功能实现
  • docker install redis【docker 安装 redis】
  • 【密码学】CKKS全同态加密方案浅析
  • 八大排序算法——堆排序
  • R语言机器学习算法实战系列(十三)随机森林生存分析构建预后模型 (Random Survival Forest)
  • Flutter Image和Text图文组件实战案例
  • vue使用高德地图实现轨迹显隐
  • 第6次CCF CSP认证真题解
  • CSS.导入方式
  • 字符串及正则表达式
  • vue 果蔬识别系统百度AI识别vue+springboot java开发、elementui+ echarts+ vant开发