當前位置:才華齋>IT認證>JAVA認證>

Java的內存劃分全解析

JAVA認證 閲讀(2.62W)

Java把內存劃分成兩種:一種是棧內存,一種是堆內存。下面一起來看看java的內存劃分全部內容。

Java的內存劃分全解析

  棧內存

存放對象:函數中基本類型的變量和對象的引用變量、靜態類方法

特點:棧有一個很重要的特殊性,就是存在棧中的數據可以共享。假設我們同時定義:

inta=3;

intb=3;

編譯器先處理inta=3;首先它會在棧中創建一個變量為a的引用,然後查找棧中是否有3這個值,如果沒找到,就將3存放進來,然後將a指向3。

接着處理intb=3;在創建完b的引用變量後,因為在棧中已經有3這個值,便將b直接指向3。這樣,就出現了a與b同時均指向3的情況。

  堆內存

存放對象:用來存放由new創建的對象和數組。

特點:在堆中分配的內存,由Java虛擬機的自動垃圾回收器來管理。

在堆中產生了一個數組或對象後,還可以在棧中定義一個特殊的變量,讓棧中這個變量的取值等於數組或對象在堆內存中的'首地址,棧中的這個變量就成了數組或對象的引用變量。

引用變量就相當於是為數組或對象起的一個名稱,以後就可以在程序中使用棧中的引用變量來訪問堆中的數組或對象。

Q:static關鍵字,是一個修飾符,用於修飾成員(成員變量和成員函數),有什麼特點

A:1,想要實現對象中的共性數據的對象共享。可以將這個數據進行靜態修飾。

2,被靜態修飾的成員,可以直接被類名所調用。也就是説,靜態的成員多了一種調用方式。類名.靜態方式。

3,靜態隨着類的加載而加載。而且優先於對象存在。