新闻详情

新闻详情

首页 / 资讯中心 / 详情

Java面试必问:JVM内存模型与GC调优全解析

发布时间:2026/9/30 9:45:37来源:尧图网络
Java面试必问:JVM内存模型与GC调优全解析
运行时数据区线程私有的三块与共享的两块程序计数器、虚拟机栈、本地方法栈随线程生灭。程序计数器记录字节码行号是唯一不抛OOM的区域。虚拟机栈存栈帧每个方法调用压入一个局部变量表、操作数栈、动态链接、返回地址都在里面。栈深度超限抛StackOverflowError线程过多则可能OOM。本地方法栈服务native方法。线程私有的内存是并发的安全区也是栈溢出的高发地。堆和方法区JDK8后为元空间是线程共享的。堆存对象实例和数组是GC主战场。方法区存类元信息、常量、静态变量JDK8后用本地内存实现元空间默认不设上限但受物理内存约束。堆是对象的天堂也是GC的战场元空间是类的档案室只增不减需要警惕。直接内存通过NIO的ByteBuffer.allocateDirect分配不受堆大小限制但受物理内存和MaxDirectMemorySize约束溢出时同样抛OOM。对象的一生从Eden到老年代新对象优先在Eden分配。Eden满触发Minor GC存活对象复制到Survivor区年龄加一。两个Survivor区交替使用对象在多次Minor GC后年龄达到阈值默认15晋升老年代。大对象直接进老年代避免在Survivor间反复复制。对象的一生是一场从Eden到老年代的迁徙每一次Minor GC都是幸存者的筛选。动态年龄判定Survivor中相同年龄对象总和超过一半该年龄及以上直接晋升。空间分配担保Minor GC前检查老年代最大可用连续空间不够则触发Full GC。GC算法与收集器没有银弹标记-清除产生碎片标记-复制浪费空间标记-整理消除碎片但移动对象。分代收集把堆分成新生代和老年代各用各的算法。GC调优的第一原则没有最好的收集器只有最合适的权衡。Serial适合单核客户端ParNew配合CMS曾是低延迟标配Parallel Scavenge追求吞吐量CMS以低停顿著称但有碎片和并发模式失败G1把堆分成Region可预测停顿模型ZGC和Shenandoah追求超低停顿。选择收集器本质是在吞吐量、停顿时间、内存占用之间做三角权衡。调优实战参数、工具与心法常用参数-Xms/-Xmx设堆初始与最大-Xmn设新生代-XX:SurvivorRatio设Eden与Survivor比例-XX:MaxTenuringThreshold设晋升年龄-XX:UseG1GC启用G1-XX:MaxGCPauseMillis设目标停顿。工具jps看进程jstat看GC频率与耗时jmap导堆转储jstack看线程栈VisualVM和GC日志分析是进阶。调优不是背参数是读日志、看监控、做假设、再验证的循环。遇到Full GC频繁先看是否内存泄漏再看晋升阈值和Survivor比例。遇到停顿过长换收集器或调Region大小。JVM调优的终点是让应用在有限内存里跑出稳定而可预测的延迟。面试官想听的正是你从日志里读出故事的能力。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Meta Muse 长任务为什么越来越慢?原因、判断方法与提速指南 2026/9/30 11:27:16

Meta Muse 长任务为什么越来越慢?原因、判断方法与提速指南

Meta Muse 执行几分钟以上的长任务时,有些用户会感觉它越跑越慢:前几步还能快速回复,后面开始长时间停留在“处理中”,生成文字的速度下降,网页操作也迟迟没有结果。 这类现象通常不能简单归结为“模型变笨了”。对于能…

阅读更多 →
【会议征稿通知 | IEEE出版 | 四川工商学院主办】第三届智能驾驶与智慧交通国际学术会议(IDST 2026) 2026/9/30 11:26:54

【会议征稿通知 | IEEE出版 | 四川工商学院主办】第三届智能驾驶与智慧交通国际学术会议(IDST 2026)

第三届智能驾驶与智慧交通国际学术会议(IDST 2026) 2026 3rd International Conference on Intelligent Driving and Smart Transportation 智能驾驶和智慧交通利用新兴技术,使城市出行更加方便、更具成本效益且更安全。在此背景下&#xf…

阅读更多 →
(undone) quard_star_tutorial - ch2 添加qemu仿真板 - Quard-Star板 2026/9/30 11:26:54

(undone) quard_star_tutorial - ch2 添加qemu仿真板 - Quard-Star板

url: https://quard-star-tutorial.readthedocs.io/zh-cn/latest/ch2.html首先把之前下载解压的 qemu-6.0.0 删掉 随后 clone 教程的 ch2 tag,切换到 git repo 的目的是为了方便追踪我们的代码修改。 git clone --branch ch2 --single-branch --no-tags https://git…

阅读更多 →
【连续多届稳定出版,快至会后3个月检索】第六届新能源与电力工程国际学术会议(ICNEPE 2026) 2026/9/30 11:26:54

【连续多届稳定出版,快至会后3个月检索】第六届新能源与电力工程国际学术会议(ICNEPE 2026)

第六届新能源与电力工程国际学术会议(ICNEPE 2026) 2026 6thInternational Conference on New Energy and Power Engineering 第六届新能源与电力工程国际学术会议(ICNEPE 2026)将于2026年11月20日至22日在中国广州隆重举行。会…

阅读更多 →
MAVLink 协议 2026/9/30 11:26:54

MAVLink 协议

MAVLink 协议 MAVLink 是消息层协议,不包含物理层与传输层。 它只规定「帧格式与消息字典」,所以同一套消息能跑在串口、UDP、CAN、数传等不同承载上;丢包表现为「数据陈旧」而非「连接中断」,指令的可靠性靠 ACK + seq 序号 + 上层重传。 适用人群与前置 面向:飞控系统 /…

阅读更多 →
HCP 地址老冲突 / 分不到?地址池 + 租约实战指南 2026/9/30 11:26:54

HCP 地址老冲突 / 分不到?地址池 + 租约实战指南

手工配 IP 的网段,迟早会撞地址。DHCP 把地址与网络参数集中到一台服务器上发,客户端开机即用。这篇先把 DORA 四步握手里每个报文的源地址、目的地址与广播方式讲清,再说租约到期前后客户端做了什么,然后给出完整的服务端与客户端…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉