-classpath,-cp
虛擬機在運行一個(gè)類(lèi)時(shí),需要將其裝入內存,虛擬機搜索類(lèi)的方式和順序如下:
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搜索順序為當前目錄、環(huán)境變量 CLASSPATH、-classpath。
-classpath告知虛擬機搜索目錄名、jar文檔名、zip文檔名,之間用分號;分隔。
例如當你自己開(kāi)發(fā)了公共類(lèi)并包裝成一個(gè)common.jar包,在使用common.jar中的類(lèi)時(shí),就需要用-classpath common.jar 告訴虛擬機從common.jar中查找該類(lèi),否則虛擬機就會(huì )拋出java.lang.NoClassDefFoundError異常,表明未找到類(lèi)定義。
在運行時(shí)可用System.getProperty(“java.class.path”)得到虛擬機查找類(lèi)的路徑。
使用-classpath后虛擬機將不再使用CLASSPATH中的類(lèi)搜索路徑,如果-classpath和CLASSPATH都沒(méi)有設置,則虛擬機使用當前路徑(.)作為類(lèi)搜索路徑。
推薦使用-classpath來(lái)定義虛擬機要搜索的類(lèi)路徑,而不要使用環(huán)境變量CLASSPATH的搜索路徑,以減少多個(gè)項目同時(shí)使用CLASSPATH時(shí)存在的潛在沖突。例如應用1要使用a1.0.jar中的類(lèi)G,應用2要使用a2.0.jar中的類(lèi)G,a2.0.jar是a1.0.jar的升級包,當a1.0.jar,a2.0.jar都在CLASSPATH中,虛擬機搜索到第一個(gè)包中的類(lèi)G時(shí)就停止搜索,如果應用1應用2的虛擬機都從CLASSPATH中搜索,就會(huì )有一個(gè)應用得不到正確版本的類(lèi)G。
-verbose[:class|gc|jni]
在輸出設備上顯示虛擬機運行信息。
verbose和verbose:class含義相同,輸出虛擬機裝入的類(lèi)的信息,顯示的信息格式如下:
[Loaded java.io.FilePermission$1 from shared objects file]
當虛擬機報告類(lèi)找不到或類(lèi)沖突時(shí)可用此參數來(lái)診斷來(lái)查看虛擬機從裝入類(lèi)的情況。
-verbose:gc在虛擬機發(fā)生內存回收時(shí)在輸出設備顯示信息,格式如下:
[Full GC 268K->168K(1984K), 0.0187390 secs]
該參數用來(lái)監視虛擬機內存回收的情況。
-verbose:jni在虛擬機調用native方法時(shí)輸出設備顯示信息,格式如下:
[Dynamic-linking native method HelloNative.sum ... JNI]
該參數用來(lái)監視虛擬機調用本地方法的情況,在發(fā)生jni錯誤時(shí)可為診斷提供便利。
-Xloggc:<file>
將虛擬機每次垃圾回收的信息寫(xiě)到日志文件中,文件名由file指定,文件格式是平文件,內容和-verbose:gc輸出內容相同。
-Xms<size>
設置虛擬機可用內存堆的初始大小,缺省單位為字節,該大小為1024的整數倍并且要大于1MB,可用k(K)或m(M)為單位來(lái)設置較大的內存數。初始堆大小為2MB。
例如:-Xms6400K,-Xms256M
-Xmx<size>
設置虛擬機內存堆的最大可用大小,缺省單位為字節。該值必須為1024整數倍,并且要大于2MB??捎胟(K)或m(M)為單位來(lái)設置較大的內存數。缺省堆最大值為64MB。
例如:-Xmx81920K,-Xmx80M
當應用程序申請了大內存運行時(shí)虛擬機拋出java.lang.OutOfMemoryError: Java heap space錯誤,就需要使用-Xmx設置較大的可用內存堆。
-Xms20M -Xmx20M -Xmn10M 堆的大小,最大為20M,新生代10M,不帶空格
-XX:+PrintGCDetails -XX:SurvivorRatio=8 eden與survivor的空間比例是8:1
-Xss<size>
設置線(xiàn)程棧的大小,缺省單位為字節。與-Xmx類(lèi)似,也可用K或M來(lái)設置較大的值。通常操作系統分配給線(xiàn)程棧的缺省大小為1MB。
另外也可在java中創(chuàng )建線(xiàn)程對象時(shí)設置棧的大小,構造函數原型為T(mén)hread(ThreadGroup group, Runnable target, String name, long stackSize)。
http://jportal.javaeye.com/blog/351282
聯(lián)系客服