Java在記憶體分配方面的理解
阿新 • • 發佈:2019-02-14
基本概念的理解
例如:Dog dog = new Dog();
物件:new Dog()為物件,
物件的引用: dog為物件的引用
成員變數:方法外部,類的內部定義的變數,成員變數必須初始化
區域性變數:方法或語句塊內部定義的變數
棧:存放基本型別的資料和物件的引用,棧中的資料大小和生命週期是可以確定,存取速度比堆要快,僅次於暫存器,棧資料可以共享。但缺點是,存在棧中的資料大小與生存期必須是 確定的,缺乏靈活性。棧中主要存放一些基本型別的變數資料(int, short, long, byte, float, double, boolean, char)和物件控制代碼(引用)。的,當沒有引用指向資料時,這個資料就會消失
堆:存放用new產生的資料,由Java虛擬機器的自動垃圾回收器來管理
靜態域:存放在物件中用static定義的靜態成員
常量池:存放常量,常量池指的是在編譯期被確定,並被儲存在已編譯的.class檔案中的一些資料。除了包含程式碼中所定義的各種基本型別(如int、long等等)和物件型(如String及陣列)的常量值(final)還包含一些以文字形式出現的符號引用