首先說明棧內存和堆內存裏存放的是什麼
- 棧內存中存放函數中定義的一些基本類型的變量和對象的引用變量;
- 堆內存中存放new創建的對象和數組。
簡單的來說,堆主要是用來存放對象的,棧主要是用來執行程序的
這麼做是因爲
- 棧的存取速度快,棧數據可以共享,但是棧中的數據大小和生存期必須確定,缺乏靈活性中存放一些基本類型的對象和對象句柄
- 堆是操作系統分配給自己內存,由於從操作系統管理的內存分配,所以再分配和銷燬時都需要佔用時間,因此用堆的效率非常低,但是優點在於編譯器不需要指導從堆裏分配多少存儲控件,也不需要知道存儲的數據要再堆裏停留多長事件,因此用堆保存數據時會得到更大的靈活性