CodeGym
AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • JVM 内存结构:栈、堆、PermGen/MetaSpace

    JAVA 25 SELF
    等级 64,课时 0
    在 JVM 运行过程中,局部变量、对象以及类的元数据分别会进入哪里:我们将拆解线程栈、堆以及 PermGen → MetaSpace 的演进。还会讨论 GC 的工作方式、常见的内存错误( StackOverflowError、 OutOfMemoryError)以及启动参数对其的影响( -Xss、 -Xmx、 -XX:MaxMetaspaceSize)。附上示意图、mermaid 图表和可运行示例。
    可用
  • 垃圾回收器:G1、ZGC、Shenandoah,对比

    JAVA 25 SELF
    等级 64,课时 1
    在本讲中我们将解析垃圾回收器( GC)在 JVM 中如何工作,经典的 Serial/ Parallel/ CMS 与现代的 G1、 ZGC 和 Shenandoah 有何不同,什么是Young Generation与Old Generation,为什么会发生 Stop-the-World Pause以及如何将其最小化。实践中我们将看到如何通过标志启用不同的 GC( -XX:+UseG1GC、 -XX:+UseZGC、 -XX:+UseShenandoahGC),如何设置Pause( -XX:MaxGCPauseMillis)与堆大小( -Xms/ -Xmx),如何阅读日志( -Xlog:gc*)以及如何避免常见错误(例如强制调用 System.gc())。
    可用
  • 局部变量、内存泄漏、弱引用

    JAVA 25 SELF
    等级 64,课时 2
    通过本课你将了解局部变量存放在哪里(线程栈)以及它与堆有何不同,为什么在 Java 中尽管有 GC 仍然可能发生内存泄漏,以及如何避免它们。我们将分析真实场景:“常驻”的 static-集合、未取消订阅的监听器和缓存。认识引用家族: SoftReference、 WeakReference、 PhantomReference,以及容器 WeakHashMap。练习修复泄漏,并讨论为什么调用 System.gc() 只是给 JVM 的提示而非命令,以及 OutOfMemoryError 可能带来的后果。
    可用
  • 内存分析工具:jmap、jvisualvm

    JAVA 25 SELF
    等级 64,课时 3
    JVM 内存问题诊断实用指南:使用 jmap 工具生成堆转储( heap dump),通过 -heap 和 -histo 查看摘要,在 jvisualvm 中分析应用(标签页 Monitor、 Heap Dump、 Threads、 Profiler),通过示例定位一次泄漏,并了解 Eclipse MAT 和 jconsole。最后给出常见错误与建议。
    可用
  • 解析内存使用中的常见错误

    JAVA 25 SELF
    等级 64,课时 4
    动手解析为什么 Java 应用会发生内存“泄漏”并变卡:遗忘的监听器( addActionListener/ removeActionListener)、永不清理的静态集合、未关闭的资源(建议: try-with-resources)、持有外部引用的匿名/内部类,以及滥用 System.gc()。我们将学会阅读 GC 日志( -Xlog:gc*、 -XX:+PrintGCDetails)、选择回收器、基于 WeakHashMap 构建缓存、进行监控( jvisualvm、 jconsole)、分析堆转储,并正确设置 -Xmx/ -Xms。最后——真实的泄漏示例及其修复。
    可用
Learn
  • 注册
  • Java 课程
  • 任务帮助
  • 定价
  • Java 语法
社区
  • 用户
  • 文章
  • 论坛
  • 聊天
  • 成功故事
  • 动态
  • 联盟计划
Company
  • 关于我们
  • 联系方式
  • 评价
  • 媒体中心
  • CodeGym for EDU
  • 常见问题
  • 支持
CodeGymCodeGym 是一个从零开始学习 Java 编程的在线课程。该课程是初学者掌握 Java 的完美方式。它包含 1200+ 个带即时验证的任务,以及必要的 Java 基础理论。为了帮助你在学习中取得成功,我们实现了一系列激励功能:测验、编码项目、关于高效学习的内容,以及 Java 开发者职业相关内容。
关注我们
界面语言
English Deutsch Español हिन्दी Français Português Polski বাংলা
简体中文
मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
“程序员是培养出来的,不是天生的” © 2026 CodeGym
MastercardVisa
“程序员是培养出来的,不是天生的” © 2026 CodeGym