jvm詳情——1、堆中存什么?棧中存什么?


數據類型
  Java虛擬機中,數據類型可以分為兩類:基本類型引用類型。基本類型的變量保存原始值,即:他代表的
值就是數值本身;而引用類型的變量保存引用值。“引用值”代表了某個對象的引用,而不是對象本身,對象
本身存放在這個引用值所表示的地址的位置。


  基本類型包括:byte,short,int,long,char,float,double,Boolean,returnAddress
  引用類型包括:類類型接口類型數組

 

 

棧是運行時的單位,而堆是存儲的單位

 棧解決程序的運行問題,即程序如何執行,或者說如何處理數據;堆解決的是數據存儲的問題,即數據怎么放、放在哪兒。

 

 

 

堆中存什么?棧中存什么?


堆中存的是對象。棧中存的是基本數據類型堆中對象的引用。一個對象的大小是不可估計的,或者說是可
以動態變化的,但是在棧中,一個對象只對應了一個4btye的引用(堆棧分離的好處:))。
為什么不把基本類型放堆中呢?因為其占用的空間一般是1~8個字節——需要空間比較少,而且因為是基本
類型,所以不會出現動態增長的情況——長度固定,因此棧中存儲就夠了,如果把他存在堆中是沒有什么意義
的(還會浪費空間,后面說明)。可以這么說,基本類型和對象的引用都是存放在棧中,而且都是幾個字節的
一個數,因此在程序運行時,他們的處理方式是統一的。但是基本類型、對象引用和對象本身就有所區別了,
因為一個是棧中的數據一個是堆中的數據。最常見的一個問題就是,Java中參數傳遞時的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM