Java堆和棧分配原理簡析以及靜態和非靜態關係簡述
1.棧:函式中定義的基本型別變數以及物件的引用變數都是存在於棧中,當定義了一個變數後,就會在棧中為其分配記憶體空間,當這個變數的作用域結束後,就會釋放此變數的記憶體空間,以便另作他用。棧的優勢是,存取速度比堆要快,僅次於直接位於CPU中的暫存器。但存在棧中的資料大小與生存期必須是確定的,缺乏靈活性。另外,棧資料可以共享。注意:棧中的共享與堆中的共享是不同的,在棧中,例如 int a = 3; int b = 3; a = 4; 在這裡首先對 a 進行判斷,如果棧中沒有 3 ,則會把 3 存進來,並將 a 指向 3 ,當建立 b 的引用變數後發現棧中已經有了 3 ,所以直接 b 指向 3,此即為棧中的共享,當 a改變指向後,並不會影響 b ,節省空間