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

配置JVM內存分配的妙招

2013-11-23 19:03:48  來源: Java核心技術 
    你知道如何配置JVM內存分配嗎這裡和大家分享幾個妙招安裝Java開發軟件時默認安裝包含兩個文件夾一個JDK(Java開發工具箱)一個JRE(Java運行環境內含JVM)其中JDK內另含一個JRE如果只是運行Java程序則JRE已足夠而JDK則只有開發人員才用到
   
    一配置JVM內存
   
    配置JVM內存的參數有四個
   
    XmxJavaHeap最大值默認值為物理內存的/最佳設值應該視物理內存大小及計算機內其他內存開銷而定
   
    XmsJavaHeap初始值Server端JVM最好將Xms和Xmx設為相同值開發測試機JVM可以保留默認值
   
    XmnJavaHeapYoung區大小不熟悉最好保留默認值
   
    Xss每個線程的Stack大小不熟悉最好保留默認值
   
    如何配置JVM內存分配
   
    ()當在命令提示符下啟動並使用JVM時(只對當前運行的類Test生效)
   
    javaXmxmXmsmXmnmXssmTest
   
    ()當在集成開發環境下(如eclipse)啟動並使用JVM時
   
    a在eclipse根目錄下打開eclipseini默認內容為(這裡設置的是運行當前開發工具的JVM內存分配)
   
    vmargsXmsmXmxmvmargs表示以下為虛擬機設置參數可修改其中的參數值也可添加XmnXss另外eclipseini內還可以設置非堆內存XX:PermSize=mXX:MaxPermSize=m
   
    此處設置的參數值可以通過以下配置在開發工具的狀態欄顯示
   
    在eclipse根目錄下創建文件options文件內容為orgeclipseui/perf/showHeapStatus=true
   
    修改eclipse根目錄下的eclipseini文件在開頭處添加如下內容
   
    debugoptionsvmjavawexe重新啟動eclipse就可以看到下方狀態條多了JVM信息
   
    b打開eclipse窗口首選項Java已安裝的JRE(對在當前開發環境中運行的java程序皆生效)
   
    編輯當前使用的JRE在缺省VM參數中輸入XmxmXmsmXmnmXssm
   
    c打開eclipse運行運行Java應用程序(只對所設置的java類生效)
   
    選定需設置內存分配的類自變量在VM自變量中輸入XmxmXmsmXmnmXssm
   
    注如果在同一開發環境中同時進行了b和c設置則b設置生效c設置無效
   
    開發環境的設置為Xmxm而類Test的設置為XmxmXmsm則運行Test時生效的設置為
   
    XmxmXmsm
   
    ()當在服務器環境下(如Tomcat)啟動並使用JVM時(對當前服務器環境下所以Java程序生效)
   
    a設置環境變量
   
    變量名CATALINA_OPTS
   
    變量值XmxmXmsmXmnmXssm
   
    b打開Tomcat根目錄下的bin文件夾編輯catalinabat將其中的%CATALINA_OPTS%(共有四處)替換為XmxmXmsmXmnmXssm
   
    二查看配置JVM內存信息
   
    RuntimegetRuntime()maxMemory()//最大可用內存對應Xmx
   
    RuntimegetRuntime()freeMemory()//當前JVM空閒內存
   
    RuntimegetRuntime()totalMemory()//當前JVM占用的內存總數其值相當於當前JVM已使用的內存及freeMemory()的總和
   
    關於maxMemory()freeMemory()和totalMemory()
   
    maxMemory()為JVM的最大可用內存可通過Xmx設置默認值為物理內存的/設值不能高於計算機物理內存
   
    totalMemory()為當前JVM占用的內存總數其值相當於當前JVM已使用的內存及freeMemory()的總和會隨著JVM使用內存的增加而增加
   
    freeMemory()為當前JVM空閒內存因為JVM只有在需要內存時才占用物理內存使用所以freeMemory()的值一般情況下都很小而JVM實際可用內存並不等於freeMemory()而應該等於maxMemory()totalMemory()+freeMemory()及其配置JVM內存分配
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26213.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.