java中的內存管理是對象的分配和釋放問題:


1、分配:程序員通過new為每個對象申請內存空間(基本類型除外),所有對象都在堆中分配空間;釋放:對象的釋放是由垃圾回收機制決定和執行的。

Java內存分為兩種:棧內存和堆內存

(1)在函數中定義的基本類型變量(即基本類型的局部變量)和對象的引用變量(即對象的變量名)都在棧內存中分配;

(2)堆內存用來存儲由new創建的對象和數組以及對象的實例變量(即全局變量)

(3)堆的優勢是可以動態分配內存大小,生存期也不必事先告訴編譯器,因為它是運行時動態分配內存的;缺點是運行時動態分配內存,存取速度慢;

(4)棧的優點是存取速度較快僅僅次於CPU中的寄存器,且棧數據可以共享;但是棧中的數據大小和生存期是必須確定的,缺乏靈活性;

(5)只有一個堆區被所有線程共享,堆區不存放基本類型和對象引用只存放對象本身

(6)每個線程包含一個棧區,保存基礎數據類型的對象和自定義對象的引用,每個棧中的數據(原始類型和對象引用)都是私有的,其他棧不能訪問

還有一個方法區:存儲所有對象數據共享區域,存儲靜態變量和普通方法、靜態方法、常量、字符串常量等信息,又叫靜態區,是所有線程共享的。

 


免責聲明!

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



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