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

3. java 堆和 JVM 内存结构

1. 什么是java堆

Java 堆是 Java 虚拟机(JVM)管理的内存中最大的一块,是所有 Java 线程共享的内存区域。

它是 Java 内存模型中最核心的部分,主要用于存放对象实例数组

 主要特点 :

  1. 对象存储:几乎所有通过new关键字创建的对象实例都存储在堆中  
  2. 共享区域:被所有线程共享,需要考虑线程安全问题  
  3. 垃圾回收主要区域:GC(Garbage Collection)主要管理堆内存  
  4. 动态分配:大小可以在JVM启动时指定,运行时可以动态扩展(取决于配置) 

2. JVM 内存结构

现代JVM通常将堆划分为以下几个区域:

1. 新生代(Young Generation)

  • Eden区:新创建的对象首先分配在这里  
  • Survivor区(S0和S1):经过Minor GC(垃圾回收)后存活的对象会移动到Survivor区    

2. 老年代(Old Generation/Tenured Generation)

  • 长期存活的对象最终会晋升到这里    

3. 元空间(Metaspace,Java 8+)

  • 替代了永久代(PermGen),存储类元数据信息

堆和栈的区别:

特性堆(Heap)栈(Stack)
存储内容对象实例基本类型变量、对象引用
线程共享每个线程私有
内存分配动态固定大小(可通过参数调整)
垃圾回收否(随线程结束自动释放)
空间大小较大较小
分配效率相对较慢相对较快

 Java堆是JVM性能调优的重要区域,合理的堆设置可以显著影响应用程序的性能和稳定性。 


上一篇                                                                                                                                     下一篇

http://www.dtcms.com/a/275968.html

相关文章:

  • YOLOv8
  • pytables模块安装
  • 【TOOL】ubuntu升级cmake版本
  • 单细胞分析教程 | (二)标准化、特征选择、降为、聚类及可视化
  • STM32用PWM驱动步进电机
  • 快捷跑通ultralytics下的yolo系列
  • 算法第三十一天:贪心算法part05(第八章)
  • 回溯算法-数据结构与算法
  • Pythone第二次作业
  • brpc 介绍与安装
  • Redis过期策略与内存淘汰机制面试笔记
  • 数据库连接池及其核心特点
  • AI编程下的需求规格文档的问题及新规范
  • ADSP-1802这颗ADI的最新DSP应该怎么做开发(一)
  • 【Redis实战】Widnows本地模拟Redis集群的2种方法
  • Syntax Error: TypeError: Cannot set properties of undefined (setting ‘parent‘)
  • Unity URP + XR 自定义 Skybox 在真机变黑问题全解析与解决方案(支持 Pico、Quest 等一体机)
  • Cookie、Session、Token 有什么区别?
  • Spring Boot 中使用 Lombok 进行依赖注入的示例
  • 【离线数仓项目】——电商域DWD层开发实战
  • 【C++ STL 库】解析stack、queue、priority_queue类
  • 中文多智能体金融交易决策框架-TradingAgents-CN
  • 本地安装ClaudeCode全攻略
  • 【Python】多线程详解:从基础概念到实战应用
  • 免费尝试claude code的安利,截至今天可用(7/12)
  • openGauss数据库管理实战指南——基本常用操作总结
  • AI:机器人未来的形态是什么?
  • Cisco ACI 生成Postman CSV 脚本场景
  • 死锁的避免
  • Spring Boot 应用中,配置的加载优先级