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,靜態隨着類的加載而加載。而且優先於對象存在。
相關文章
-
關於java內存查看與分析詳解
丸子頭髮型扎法的種類是很多的,很多人都想要把頭髮扎得最時尚,最好看,現在最流行的一種丸子頭髮型就是韓式凌亂丸子頭髮型了,你會不會扎?下面就學習一下韓式凌亂丸子頭扎法,示範女生凌亂髮型打理。這是一款栗色染髮的女生髮 -
Java內存是如何劃分的
Java具有簡單性、面向對象、分佈式、健壯性、安全性、與可移植性、多線程、動態性等特點。Java的內存是怎麼劃分的?下面就一起來了解看看吧! Java內存劃分Java把內存劃分成兩種:一種是棧內存,一種是堆內存。 棧內 -
分析Java內存分配的棧和堆以及常量池
廣義概念(亦稱體育運動)。是指以身體練習爲基本手段,以增強人的體質,促進人的全面發展,豐富社會文化生活和促進精神文明爲目的的一種有意識、有組織的社會活動。它是社會總文化的一部分。下面是本站小編爲您精心整理的體 -
基於Java堆內存的十個要點的總結分析
當我開始學習Java編程時,我不知道什麼是堆內存或堆空間,我甚至不知道當對象創建時,它們被放在了哪裏。當我開始正式寫一些程序後,我會經常遇到fMemoryError的報錯,之後我纔開始關注什麼是堆內存或者說堆空間(heap space)。對 -
Java內部類詳解及實例分析
Java是一門面向對象編程語言,本文是本站小編爲大家介紹Java 基礎之內部類詳解及實例的相關資料,供參考閱讀,希望對大家有所幫助!想了解更多相關信息請持續關注我們應屆畢業生考試網!內部類不是很好理解,但說白了其實也就 -
Java內存區域的使用詳解
Java 內存劃分:在Java內存分配中,java將內存分爲:方法區,堆,虛擬機棧,本地方法棧,程序計數器。其中方法區和堆對於所有線程共享,而虛擬機棧和本地方法棧還有程序計數器對於線程隔離的。每個區域都有各自的創建和銷燬時間 -
Java內存溢出的解決方法
一、內存溢出類型1、fMemoryError: PermGen spaceJVM管理兩種類型的內存,堆和非堆。堆是給開發人員用的上面說的就是,是在JVM啓動時創建;非堆是留給JVM自己用的,用來存放類的信息的。它和堆不同,運行期內GC不會釋放空 -
如何解決java內存泄漏
在Java中,內存泄漏就是存在一些被分配的對象,這些對象有下面兩個特點,首先,這些對象是可達的,即在有向圖中,存在通路可以與其相連;其次,這些對象是無用的,即程序以後不會再使用這些對象。假如對象滿足這兩個條件,這些對象就可 -
如何解決java內存泄漏的問題
在C++中,內存泄漏的範圍更大一些。有些對象被分配了內存空間,然後卻不可達,由於C++中沒有GC,這些內存將永遠收不回來。在Java中,這些不可達的對象都由GC負責回收,因此不需要考慮這部分的內存泄露。注重事項:1.最基本的建議是 -
java中JVM虛擬機內存模型詳細說明
以下是本站小編爲大家收集的java中JVM虛擬機內存模型詳細說明內容,歡迎閱讀學習! JVM的內部結構如下圖:java中JVM虛擬機內存模型詳細說明 - 天涯草 - 天涯草一個優秀Java程序員,必須瞭解Java內存模型、GC工作原理,以及