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

说说JVM的常见问题

一、JVM内存结构

  1. JVM的内存模型(运行时数据区)

JVM运行时数据区包括:

  • 程序计数器:当前线程所执行的字节码的行号指示器。每个线程都有一个独立的程序计数器。

  • Java虚拟机栈:每个线程私有,生命周期与线程相同。每个方法执行时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法返回地址等。局部变量表存放编译期可知的基本数据类型、对象引用和returnAddress类型。

  • 本地方法栈:与虚拟机栈类似,但为Native方法服务。

  • Java堆:被所有线程共享,在虚拟机启动时创建,用于存放对象实例。是垃圾收集器管理的主要区域。

  • 方法区:存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。在HotSpot中,方法区也被称为“永久代”(JDK8之前)和“元空间”(JDK8及之后)。

  • 运行时常量池:方法区的一部分,用于存放编译期生成的各种字面量和符号引用。

2. Java堆的结构?什么是新生代和老年代?

Java堆是垃圾收集的主要区域,从分代回收的角度,分为新生代和老年代。

  • 新生代:新创建的对象首先放在新生代。新生代又分为Eden区和两个Survivor区(通常称为S0和S1,或者from和to)。大多数对象在Eden区中创建,当Eden区满时,触发Minor GC,将存活的对象移动到Survivor区。对象在Survivor区中经过多次GC后,年龄达到阈值(默认15)则进入老年代。

  • 老年代:存放长期存活的对象和大对象(比如大数组)。当老年代空间不足时,触发Major GC(或Full GC)。

  • 另外,还有一部分空间是永久代/元空间,但不在堆内,而是方法区的实现。

二、垃圾回收

http://www.jsqmd.com/news/888930/

相关文章:

  • 低资源音乐生成中的适配器设计优化与实践
  • CLI与人格化AI结合:打造社交技能训练工具的技术实现
  • XGBoost与PR-AUC:解决天文数据类别不平衡分类的实践指南
  • DeepSeek熔断失效的4种静默故障模式:从指标漂移到上下文泄漏,附自动检测脚本+Grafana看板模板
  • 千川投手最核心的能力不再是建计划,是用AI拆解“跑量素材”的结构特征——爆款复刻Agent帮你做
  • 2026广东靠谱全屋定制品牌评测选购指南 - 服务品牌热点
  • 深度解析Alas自动化框架:从架构设计到实战应用的完整指南
  • 构建团队心理安全感:从核心理念到工程化实践指南
  • iOS自动化真机调试全链路实践:从签名到WDA适配
  • 大模型选型实战:GPT-4、Claude 3、Llama 3成本与性能深度评测
  • 探索Zotero-Style:重新定义文献管理的美学体验
  • Android Frida反检测实战:内存扫描、ptrace绕过与静默注入
  • 从Go转向Rust迁移指南:靠自觉 vs. 靠编译器
  • 从一次失败的Getshell到成功的XSS:我的文件上传漏洞挖掘复盘笔记
  • XC16x快速中断机制与嵌入式实时系统优化
  • OpenClaw技能安装失败排查指南:从网络到权限的完整解决方案
  • 钙钛矿太阳能电池工艺优化:环境变量耦合效应与可解释机器学习分析
  • 机器学习与可解释AI在生活满意度预测中的实践与思考
  • 从主流框架到自研:构建生产级多智能体协作运行时的实战复盘
  • 终极Windows右键菜单清理指南:ContextMenuManager让你3分钟搞定杂乱菜单
  • QMCDecode:打破QQ音乐格式壁垒,轻松解锁加密音频文件
  • 计算机教材编写方法论与实践指南
  • 国内超高分子量聚乙烯板生产企业质量核心维度排行 - 奔跑123
  • 程序员打怪升级之路:我是怎么从写bug到画架构图的
  • Shannon AI渗透测试:重构CI/CD安全左移执行逻辑
  • JWT与OAuth2的本质区别及API安全设计实战
  • 超高分子量聚乙烯板头部企业质量维度综合排行盘点 - 奔跑123
  • 告别AT指令依赖:手把手教你用Python+EC800M模块,更优雅地发送HTTP POST请求
  • Android跨平台开发方案深度对比与选型指南:聚焦小程序技术
  • 终极指南:30秒掌握猫抓浏览器资源嗅探扩展,轻松下载网页视频