You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDK 8升级至11后Total Loaded Classes增长的合理性咨询

JDK 11升级后Total Loaded Classes增长但Loaded Classes稳定的问题解答

核心结论

当Loaded Classes数量稳定、堆/非堆内存无异常波动时,Total Loaded Classes持续增长通常无需担忧,这是JDK 11类加载/卸载机制优化后的正常表现。

关键原因解析

  • 指标定义差异:Total Loaded Classes统计的是应用运行以来所有被加载过的类的累计总数,包括已经被垃圾回收器卸载的类;而Loaded Classes是当前内存中处于活跃状态的类数量。只要Loaded Classes保持稳定,说明类卸载机制在正常运作,旧类被及时清理,不会造成内存堆积。
  • JDK版本差异:JDK 11引入的模块化系统(JPMS)以及元空间(Metaspace)管理优化,让类的加载更偏向"按需加载",且类卸载的触发逻辑更灵活。很多类在完成临时任务后会被快速卸载,这就导致Total Loaded Classes的累计数值持续走高,但这是合理的机制运行结果,和JDK 8的类加载逻辑有明显区别。

可选验证手段

如果仍有疑虑,可以通过以下方式进一步确认:

  • 监控元空间使用:关注Metaspace的内存占用趋势,只要其使用量稳定在合理区间、没有持续上涨,就说明不存在类加载导致的内存泄漏。
  • 分析GC日志:添加JVM参数-XX:+PrintGCDetails、-XX:+PrintClassHistogramBeforeFullGC和-XX:+PrintClassHistogramAfterFullGC,查看Full GC前后的类数量变化,确认被卸载的类数量处于正常范围。
  • 排查动态类生成场景:检查应用中是否使用反射、动态代理、字节码增强框架(如ASM、CGLIB)等会生成临时类的组件,这类场景本身就会频繁加载和卸载类,是Total Loaded Classes增长的常见原因,只要Loaded Classes稳定就无需担心。

内容的提问来源于stack exchange,提问作者Dreamer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 03:27:09