Java內存是如何劃分的
Java具有簡單性、面向對象、分布式、健壯性、安全性、與可移植性、多線程、動態(tài)性等特點。Java的內存是怎么劃分的?下面就一起來了解看看吧!
Java內存劃分
Java把內存劃分成兩種:一種是棧內存,一種是堆內存。
棧內存
存放對象:函數(shù)中基本類型的變量和對象的引用變量、靜態(tài)類方法
特點:棧有一個很重要的特殊性,就是存在棧中的數(shù)據(jù)可以共享。假設我們同時定義:
inta=3;
intb=3;
編譯器先處理inta=3;首先它會在棧中創(chuàng)建一個變量為a的引用,然后查找棧中是否有3這個值,如果沒找到,就將3存放進來,然后將a指向3。
接著處理intb=3;在創(chuàng)建完b的引用變量后,因為在棧中已經(jīng)有3這個值,便將b直接指向3。這樣,就出現(xiàn)了a與b同時均指向3的情況。
堆內存
存放對象:用來存放由new創(chuàng)建的對象和數(shù)組。
特點:在堆中分配的內存,由Java虛擬機的自動垃圾回收器來管理。
在堆中產(chǎn)生了一個數(shù)組或對象后,還可以在棧中定義一個特殊的變量,讓棧中這個變量的取值等于數(shù)組或對象在堆內存中的首地址,棧中的這個變量就成了數(shù)組或對象的引用變量。
引用變量就相當于是為數(shù)組或對象起的一個名稱,以后就可以在程序中使用棧中的引用變量來訪問堆中的數(shù)組或對象。
Q:static關鍵字,是一個修飾符,用于修飾成員(成員變量和成員函數(shù)),有什么特點
A:1,想要實現(xiàn)對象中的共性數(shù)據(jù)的對象共享?梢詫⑦@個數(shù)據(jù)進行靜態(tài)修飾。
2,被靜態(tài)修飾的成員,可以直接被類名所調用。也就是說,靜態(tài)的成員多了一種調用方式。類名.靜態(tài)方式。
3,靜態(tài)隨著類的加載而加載。而且優(yōu)先于對象存在。
【Java內存是如何劃分的】相關文章:
如何解決java內存泄漏02-11
如何識別Java中的內存泄漏12-05
如何解決java內存泄漏的問題09-18
Java的內存模型03-03
Java內存回收01-19
java程序運行時內存如何分配07-24
java內存的詳細介紹12-06
Java內存區(qū)域的使用詳解02-11