java內存分配機制_第1頁
java內存分配機制_第2頁
java內存分配機制_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、java 內存分配機制通過這幾天對一個內存溢出程序的監(jiān)控,學習了程序運 行時對內存的使用機制,在這里和大家分享下。Java 程序運行在 JVM(Java Virtual Machine , Java 虛擬機 ) 上,可以把 JVM 理解成 Java 程序和操作系統(tǒng)之間的橋梁, JVM 實現(xiàn)了 Java 的平臺無關性,由此可見 JVM 的重要性。 所以在學習 Java 內存分配原理的時候一定要牢記這一切都 是在 JVM 中進行的, JVM 是內存分配原理的基礎與前提。 一個完整的 Java 程序運行過程會涉及以下內存區(qū)域: 寄存器: JVM 內部虛擬寄存器,存取速度非???,程序不可 控制。棧:保

2、存局部變量的值,包括: a. 用來保存基本數(shù)據類型的 值;b.保存類的實例,即堆區(qū)對象的引用(指針)。也可以用來保存加載方法時的幀。堆:用來存放動態(tài)產生的數(shù)據, 比如 new 出來的對象。 注意 創(chuàng)建出來的對象只包含屬于各自的成員變量,并不包括成員 方法。因為同一個類的對象擁有各自的成員變量,存儲在各 自的堆中,但是他們共享該類的方法,并不是每創(chuàng)建一個對 象就把成員方法復制一次。常量池: JVM 為每個已加載的類型維護一個常量池, 常量池 就是這個類型用到的常量的一個有序集合。 包括直接常量 ( 基 本類型, String) 和對其他類型、方法、字段的符號引用。池 中的數(shù)據和數(shù)組一樣通過索引訪

3、問。由于常量池包含了一個 類型所有的對其他類型、方法、字段的符號引用,所以常量 池在 Java 的動態(tài)鏈接中起了核心作用。 常量池存在于堆中。 代碼段:用來存放從硬盤上讀取的源程序代碼。 數(shù)據段:用來存放 static 定義的靜態(tài)成員。下圖表示內存分配圖:對于 java 和內存之間,有如下幾點 需要注意:1. 一個 Java 文件,只要有 main 入口方法,我們就認為這是 一個 Java 程序,可以單獨編譯運行。2. 無論是普通類型的變量還是引用類型的變量 (俗稱實例 ), 都可以作為局部變量,他們都可以出現(xiàn)在棧中。只不過普通 類型的變量在棧中直接保存它所對應的值,而引用類型的變 量保存的是

4、一個指向堆區(qū)的指針,通過這個指針,就可以找 到這個實例在堆區(qū)對應的對象。因此,普通類型變量只在棧 區(qū)占用一塊內存,而引用類型變量要在棧區(qū)和堆區(qū)各占一塊 內存。3. 分清什么是實例什么是對象。 Class a= new Class(); 此時 a 叫實例,而不能說 a 是對象。實例在棧中,對象在堆中,操作實例實際上是通過實例的指針間接操作對象。多個實例可 以指向同一個對象。4. 棧中的數(shù)據和堆中的數(shù)據銷毀并不是同步的。方法一旦結 束,棧中的局部變量立即銷毀,但是堆中對象不一定銷毀。 因為可能有其他變量也指向了這個對象,直到棧中沒有變量 指向堆中的對象時,它才銷毀,而且還不是馬上銷毀,要等 垃圾回收掃描時才可以被銷毀。5. 以上的棧、堆、代碼段、數(shù)據段等等都是相對于應用程序 而言的。每一個應用程序都對應唯一的一個 JVM 實例,每 一個 JVM 實例都有自己的內存區(qū)域,互不影響。并且這些 內存區(qū)域是所有線程共享的。這里提到的棧和堆都是整體上 的概念,這些堆棧還可以細分。6 . 類的成員變量在不同對象中各不相同, 都有自己的存儲

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論