Jvm啟動引數設定
引言:
在google、baidu中輸入關鍵字,出現的連結大部分都是關於:
1、jdk提供java 命令引數說明
2、eclipse啟動引數配置(即eclipse.ini檔案的配置)
很少有一篇文章對這些引數在各個環境中的配置進行一個整體上的總結。故小生在此故弄玄虛一把,請各位牛哥們指教
正文:
一、先著手用兩種方式整一個demo(very very easy)(1)用EditPlus+Jdk提供的命令手動執行java應用程式
Main.java類檔案如下(Runtime類隨後介紹):
public class Main { /** * @param args */ public static void main(String[] args) { Runtime runtime = Runtime.getRuntime(); long maxMemory = runtime.maxMemory(); long totalMemory = runtime.totalMemory(); long freeMemory = runtime.freeMemory(); System.out.println("maxMemory: "+maxMemory); System.out.println("totalMemory: "+totalMemory); System.out.println("freeMemory: "+freeMemory); /* output: maxMemory: 66650112 totalMemory: 5177344 freeMemory: 4955880 maxMemory: 399572992 totalMemory: 104071168 freeMemory: 103778776 */ } }
由於本人機器沒配置jdk環境變數,故直接到javac、java命令所在路徑:C:\Program Files\Java\jdk1.6.0_10\bin(根據您安裝的jdk目錄而定)
執行以下命令:javac Main.java,得到Main.class檔案
再執行以下命令:java -Xms100m -Xmx384m Main,輸出截圖如下:
注意:命令:java -Xms100m -Xmx384m Main中的 -Xms100m -Xmx384m即是指定你應用程式執行時,jvm的堆記憶體情況
(2)利用eclipse,這個業界火得不能再火的"日食"IDE工具來整下:
這個不用多講,截圖如下:
在eclipse中配置jvm執行時引數過程如下(截圖):
Window ---> Preferences --> Java --> Installed JREs -->選中執行java程式的所使用的jdk,配置如下:
二、利用 "永恆之道" 的 Java API分析下程式中的Runtime類
Runtime類概要:
每一個應用程式都有Runtime類一個單獨的例項,通過此類的例項,應用程式能夠與其執行的環境進行一些互動。
注意:此類的例項,應用程式無法建立,只能通過getRunTime得到(即Runtime.getRuntime())
以下對maxMemory()、totalMemory()、freeMemory()進行簡要說明:
maxMemory():獲取jvm能夠嘗試獲取的最大堆記憶體空間(即上面配置的-Xms384m)
totalMemory():獲取jvm已經分配到總的堆記憶體空間
freeMemory():獲取jvm已經分配到的剩餘堆記憶體空間
所以,最大可利用的堆記憶體=maxMemory() -totalMemory() + freeMemory()
三、個人總結以及感悟
以前一直認為:配置eclispe.ini,就已經配置了我們所編寫的application執行時jvm的堆記憶體。(現在才知道我錯的好離譜)
其實,配置eclipse.ini只是配置了eclipse執行時的jvm堆記憶體(eclispe是一個java程式)。
所以,對於我,總結只有三個字:我很傻
四、引申:
對jvm內部原理,在此就不贅述了