標籤:異常 伺服器 value 環境變數 serve 設定檔 應用程式 很多 順序
1. -client,-server
這兩個參數用於設定虛擬機器使用何種運行模式,client模式啟動比較快,但運行時效能和記憶體管理效率不如server模式,通常用於用戶端應用程式。相反,server模式啟動比client慢,但可獲得更高的運行效能。
在 windows上,預設的虛擬機器類型為client模式,如果要使用 server模式,就需要在啟動虛擬機器時加-server參數,以獲得更高效能,對伺服器端應用,推薦採用server模式,尤其是多個CPU的系統。在 Linux,Solaris上預設採用server模式。
3. -classpath,-cp
虛擬機器在運行一個類時,需要將其裝入記憶體,虛擬機器搜尋類的方式和順序如下:
Bootstrap classes,Extension classes,User classes。
Bootstrap 中的路徑是虛擬機器內建的jar或zip檔案,虛擬機器首先搜尋這些包檔案,用System.getProperty("sun.boot.class.path")可得到虛擬機器搜尋的包名。
Extension是位於jre"lib"ext目錄下的jar檔案,虛擬機器在搜尋完Bootstrap後就搜尋該目錄下的jar檔案。用System. getProperty("java.ext.dirs”)可得到虛擬機器使用Extension搜尋路徑。
User classes搜尋順序為目前的目錄、環境變數 CLASSPATH、-classpath。
4. -classpath
告知虛擬機器搜尋目錄名、jar文檔名、zip文檔名,之間用分號;分隔。
例如當你自己開發了公用類並封裝成一個common.jar包,在使用 common.jar中的類時,就需要用-classpath common.jar 告訴虛擬機器從common.jar中尋找該類,否則虛擬機器就會拋出java.lang.NoClassDefFoundError異常,表明未找到類定義。
在運行時可用System.getProperty(“java.class.path”)得到虛擬機器尋找類的路徑。使用-classpath後虛擬機器將不再使用CLASSPATH中的類搜尋路徑,如果-classpath和CLASSPATH都沒有設定,則虛擬機器使用當前路徑(.)作為類搜尋路徑。
推薦使用-classpath來定義虛擬機器要搜尋的類路徑,而不要使用環境變數 CLASSPATH的搜尋路徑,以減少多重專案同時使用CLASSPATH時存在的潛在衝突。例如應用1要使用a1.0.jar中的類G,應用2要使用 a2.0.jar中的類G,a2.0.jar是a1.0.jar的升級包,當a1.0.jar,a2.0.jar都在CLASSPATH中,虛擬機器搜尋到第一個包中的類G時就停止搜尋,如果應用1應用2的虛擬機器都從CLASSPATH中搜尋,就會有一個應用得不到正確版本的類G。
5. -D<propertyName>=value
在虛擬機器的系統屬性中設定屬性名稱/值對,運行在此虛擬機器之上的應用程式可用System.getProperty(“propertyName”)得到value的值。
如果value中有空格,則需要用雙引號將該值括起來,如-Dname=”space string”。
該參數通常用於設定系統級全域變數值,如設定檔路徑,應為該屬性在程式中任何地方都可訪問。
這裡有很多參數 http://xinklabi.iteye.com/blog/837435
java命令列參數說明學習