<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>JVM on YennJ12 Engineering Blog</title><link>https://yennj12.js.org/yennj12_blog_V4/tags/jvm/</link><description>Recent content in JVM on YennJ12 Engineering Blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 29 Sep 2025 09:50:40 +0800</lastBuildDate><atom:link href="https://yennj12.js.org/yennj12_blog_V4/tags/jvm/feed.xml" rel="self" type="application/rss+xml"/><item><title>JVM 記憶體深度解析：堆疊與堆積記憶體完整指南</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/jvm-memory-heap-stack-comprehensive-guide-zh/</link><pubDate>Mon, 29 Sep 2025 09:50:40 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/jvm-memory-heap-stack-comprehensive-guide-zh/</guid><description>前言 Java 虛擬機器（JVM）的記憶體管理是 Java 應用程式效能的核心關鍵。本文將深入探討 JVM 記憶體結構，特別是堆疊（Stack）與堆積（Heap）記憶體的運作機制，並提供實際的程式碼範例與最佳化策略。
JVM 記憶體結構概覽 JVM 記憶體主要分為以下幾個區域：
graph TB subgraph &amp;#34;JVM 記憶體區域&amp;#34; PC[程式計數器&amp;lt;br/&amp;gt;Program Counter] STACK[虛擬機器堆疊&amp;lt;br/&amp;gt;VM Stack] NATIVE[本地方法堆疊&amp;lt;br/&amp;gt;Native Method Stack] HEAP[堆積記憶體&amp;lt;br/&amp;gt;Heap Memory] METHOD[方法區&amp;lt;br/&amp;gt;Method Area] DIRECT[直接記憶體&amp;lt;br/&amp;gt;Direct Memory] end subgraph &amp;#34;堆積記憶體詳細結構&amp;#34; YOUNG[年輕世代&amp;lt;br/&amp;gt;Young Generation] OLD[老年世代&amp;lt;br/&amp;gt;Old Generation] subgraph &amp;#34;年輕世代細分&amp;#34; EDEN[Eden 區] S0[Survivor 0] S1[Survivor 1] end end HEAP --&amp;gt; YOUNG HEAP --&amp;gt; OLD YOUNG --&amp;gt; EDEN YOUNG --&amp;gt; S0 YOUNG --&amp;gt; S1 JVM 記憶體區域比較表 記憶體區域 執行緒共享 生命週期 主要用途 GC 影響 程式計數器 否 執行緒生命週期 記錄當前執行指令位置 無 虛擬機器堆疊 否 執行緒生命週期 方法調用與局部變數 無 本地方法堆疊 否 執行緒生命週期 本地方法調用 無 堆積記憶體 是 JVM 生命週期 物件實例與陣列 是 方法區 是 JVM 生命週期 類別資訊與常數池 部分 直接記憶體 是 手動管理 NIO 操作緩衝區 無 堆疊記憶體（Stack Memory）深度解析 堆疊記憶體的特性 堆疊記憶體是每個執行緒獨有的記憶體區域，採用 LIFO（Last In First Out）的結構。</description></item></channel></rss>