Java內存是如何劃分的
Java具有簡單性、面向對象、分佈式、健壯性、安全性、與可移植性、多線程、動態性等特點。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進程對應唯一一個JVM實例,每一個JVM實例唯一對應一個堆,每一個線程有一個自己私有的棧。進程所創建的所有類的實例( -
如何識別Java中的內存泄漏
Java開發人員都知道,Java利用垃圾回收機制來自動保持應用程序內存的乾淨和健康。然而可能有人不知道的是,即使使用了垃圾回收機制,Java中仍然可能存在內存泄漏風險。如果你碰到下面的錯誤代碼:如果你確認是內存分配不足,那 -
如何解決java內存泄漏
時光在流逝,從不停歇,我們的工作又進入新的階段,爲了在工作中有更好的成長,一起對今後的學習做個計劃吧。我們該怎麼擬定計劃呢?以下是小編爲大家整理的it銷售年工作計劃,僅供參考,歡迎大家閱讀。it銷售年工作計劃1工作目標 -
如何解決java內存泄漏的問題
在C++中,內存泄漏的範圍更大一些。有些對象被分配了內存空間,然後卻不可達,由於C++中沒有GC,這些內存將永遠收不回來。在Java中,這些不可達的對象都由GC負責回收,因此不需要考慮這部分的內存泄露。注重事項:1.最基本的建議是 -
Java的內存劃分全解析
Java把內存劃分成兩種:一種是棧內存,一種是堆內存。下面一起來看看java的內存劃分全部內容。 棧內存存放對象:函數中基本類型的變量和對象的引用變量、靜態類方法特點:棧有一個很重要的特殊性,就是存在棧中的數據可以共 -
Java入門教程:如何使用一個Java
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++裏難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。下面是本站小編整理的關於使用java語言的內容,歡迎閱讀! Java入 -
Java零基礎如何學好Java語言
作爲Java零基礎的人,你知道該如何學好Java語言嗎,下面我們一起來看看吧,歡迎大家閱讀! Java零基礎如何學好Java語言 把Java基礎打牢大學裏學過c語言的同學學習起來Java編程很快,因爲像條件判斷語句ifelseswitch什麼 -
java中JVM虛擬機內存模型詳細說明
以下是本站小編爲大家收集的java中JVM虛擬機內存模型詳細說明內容,歡迎閱讀學習! JVM的內部結構如下圖:java中JVM虛擬機內存模型詳細說明 - 天涯草 - 天涯草一個優秀Java程序員,必須瞭解Java內存模型、GC工作原理,以及 -
如何學好Java 學習Java的步驟介紹
初學者想要自己學習Java,但是應該如何學習,從何處着手卻很迷茫。Java是個平臺,以下是本站小編搜索整理的關於如何學習Java的步驟介紹,供參考學習,希望對大家有所幫助!想了解更多相關信息請持續關注我們應屆畢業生考試網!1.