熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

JVM基礎:JVM內存組成及分配

2013-11-23 19:27:17  來源: Java核心技術 
    java內存組成介紹堆(Heap)和非堆(Nonheap)內存
   
    按照官方的說法Java 虛擬機具有一個堆堆是運行時數據區域所有類實例和數組的內存均從此處分配堆是在 Java 虛擬機啟動時創建的在JVM中堆之外的內存稱為非堆內存(Nonheap memory)可以看出JVM主要管理兩種類型的內存堆和非堆簡單來說堆就是Java代碼可及的內存是留給開發人員使用的非堆就是JVM留給 自己用的所以方法區JVM內部處理或優化所需的內存(如JIT編譯後的代碼緩存)每個類結構(如運行時常數池字段和方法數據)以及方法和構造方法 的代碼都在非堆內存中
   
    組成圖
   

  

 
    ◆  方法棧&本地方法棧
   
    線程創建時產生方法執行時生成棧幀
   
    ◆ 方法區
   
    存儲類的元數據信息 常量等
   
    ◆ 堆
   
    java代碼中所有的new操作
   
    ◆ native Memory(C heap)
   
    Direct Bytebuffer JNI Compile GC;
   
    堆內存分配
   
    JVM初始分配的內存由Xms指定默認是物理內存的/;JVM最大分配的內存由Xmx指 定默認是物理內存的/默認空余堆內存小於%時JVM就會增大堆直到Xmx的最大限制空余堆內存大於%時JVM會減少堆直到 Xms的最小限制因此服務器一般設置XmsXmx相等以避免在每次GC 後調整堆的大小對象的堆內存由稱為垃圾回收器的自動內存管理系統回收
   

  

 

  

 
    非堆內存分配
   
    JVM使用XX:PermSize設置非堆內存初始值默認是物理內存的/;由XX:MaxPermSize設置最大非堆內存的大小默認是物理內存的/
   

  

 
    JVM內存限制(最大值)
   
    JVM內存的最大值跟操作系統有很大的關系簡單的說就位處理器雖然 可控內存空間有GB但是具體的操作系統會給一個限制這個限制一般是GBGB(一般來說Windows系統下為GGLinux系統 下為GG)bit以上的處理器就不會有限制了
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26886.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.