結論:**每個線程擁有獨立的 Java 虛擬機棧 (線程私有)**,但棧幀中引用的**堆對象可被多線程訪問** — 這就是「棧私有、數據可共享」的本質。
// 線程 A
Object obj = new Object(); // obj 引用在 A 的棧幀局部變量表
sharedRef = obj; // 靜態字段/堆對象字段 持有引用
// 線程 B
Object o = sharedRef; // B 從堆/靜態區讀取引用,指向同一堆對象
o.hashCode(); // B 訪問對象數據 — **共享的是堆對象,而非棧幀**
深入閱讀:《深入理解 Java 虛擬機》第 2 章「虛擬機棧」節。