你知道如何配置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生效)
java
Xmx
m
Xms
m
Xmn
m
Xss
mTest
(
)當在集成開發環境下(如eclipse)啟動並使用JVM時
a
在eclipse根目錄下打開eclipse
ini
默認內容為(這裡設置的是運行當前開發工具的JVM內存分配)
vmargs
Xms
m
Xmx
m
vmargs表示以下為虛擬機設置參數
可修改其中的參數值
也可添加
Xmn
Xss
另外
eclipse
ini內還可以設置非堆內存
如
XX:PermSize=
m
XX:MaxPermSize=
m
此處設置的參數值可以通過以下配置在開發工具的狀態欄顯示
在eclipse根目錄下創建文件options
文件內容為
org
eclipse
ui/perf/showHeapStatus=true
修改eclipse根目錄下的eclipse
ini文件
在開頭處添加如下內容
debugoptions
vmjavaw
exe重新啟動eclipse
就可以看到下方狀態條多了JVM信息
b
打開eclipse
窗口
首選項
Java
已安裝的JRE(對在當前開發環境中運行的java程序皆生效)
編輯當前使用的JRE
在缺省VM參數中輸入
Xmx
m
Xms
m
Xmn
m
Xss
m
c
打開eclipse
運行
運行
Java應用程序(只對所設置的java類生效)
選定需設置內存分配的類
自變量
在VM自變量中輸入
Xmx
m
Xms
m
Xmn
m
Xss
m
注
如果在同一開發環境中同時進行了b和c設置
則b設置生效
c設置無效
如
開發環境的設置為
Xmx
m
而類Test的設置為
Xmx
m
Xms
m
則運行Test時生效的設置為
Xmx
m
Xms
m
(
)當在服務器環境下(如Tomcat)啟動並使用JVM時(對當前服務器環境下所以Java程序生效)
a
設置環境變量
變量名
CATALINA_OPTS
變量值
Xmx
m
Xms
m
Xmn
m
Xss
m
b
打開Tomcat根目錄下的bin文件夾
編輯catalina
bat
將其中的%CATALINA_OPTS%(共有四處)替換為
Xmx
m
Xms
m
Xmn
m
Xss
m
二
查看配置JVM內存信息
Runtime
getRuntime()
maxMemory()
//最大可用內存
對應
Xmx
Runtime
getRuntime()
freeMemory()
//當前JVM空閒內存
Runtime
getRuntime()
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