CodeGym
AI Academy
促銷
CodeGym University
學習
課程
任務
問卷 & 測驗
遊戲
說明
行程
社群
用戶
論壇
聊天
文章
成功故事
動態
評價
訂閱
淺色主題

課程

  • 評論
  • 關於我們
開始
開始學習
立即開始學習
  • My Progress
  • Courses
  • 任務地圖
  • 課程
  • JVM 記憶體結構:堆疊(Stack)、堆(Heap)、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 有何差異,什麼是年輕代與老年代,為什麼會出現 Stop-the-World 停頓,以及如何將其最小化。實作上我們會看看如何用旗標啟用不同 GC( -XX:+UseG1GC、 -XX:+UseZGC、 -XX:+UseShenandoahGC)、調整停頓( -XX:MaxGCPauseMillis)與堆大小( -Xms/ -Xmx)、閱讀日誌( -Xlog:gc*),並避免典型錯誤(例如強制呼叫 System.gc())。
    可用
  • 區域變數、記憶體洩漏、弱引用

    JAVA 25 SELF
    等級 64,課程 2
    在本講座中,你將了解區域變數位於哪裡(執行緒堆疊)以及它與堆(heap)有何不同,為什麼即便有 GC,Java 仍可能發生記憶體洩漏,以及如何避免。會解析真實情境:「永恆」的 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)、分析 heap dump,並正確調整 -Xmx/ -Xms。最後 — 提供真實的外洩案例與修正方式。
    可用
學習
  • 註冊
  • Java 課程
  • 題目協助
  • 價格
  • Java 語法
社群
  • 用戶
  • 文章
  • 論壇
  • 聊天
  • 成功故事
  • 動態
  • 聯盟計畫
公司
  • 關於我們
  • 聯絡方式
  • 評價
  • 新聞中心
  • 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