-Xms<size>

設(shè)置虛擬機(jī)可用內(nèi)存堆的初始大小,缺省單位為字節(jié),該大小為1024的整數(shù)倍并且要大于1MB,可用k(K)m(M)為單位來設(shè)置較大的內(nèi)存數(shù)。初始堆大小為2MB

例如:-Xms6400K-Xms256M



-Xmx<size>

設(shè)置虛擬機(jī)內(nèi)存堆的最大可用大小,缺省單位為字節(jié)。該值必須為1024整數(shù)倍,并且要大于2MB。可用k(K)m(M)為單位來設(shè)置較大的內(nèi)存數(shù)。缺省堆最大值為64MB

例如:-Xmx81920K-Xmx80M

當(dāng)應(yīng)用程序申請(qǐng)了大內(nèi)存運(yùn)行時(shí)虛擬機(jī)拋出java.lang.OutOfMemoryError: Java heap space錯(cuò)誤,就需要使用-Xmx設(shè)置較大的可用內(nèi)存堆。


-Xss<size>

設(shè)置線程棧的大小,缺省單位為字節(jié)。與-Xmx類似,也可用KM來設(shè)置較大的值。通常操作系統(tǒng)分配給線程棧的缺省大小為1MB

另外也可在java中創(chuàng)建線程對(duì)象時(shí)設(shè)置棧的大小,構(gòu)造函數(shù)原型為Thread(ThreadGroup group, Runnable target, String name, long stackSize)


-client-server

這兩個(gè)參數(shù)用于設(shè)置虛擬機(jī)使用何種運(yùn)行模式,client模式啟動(dòng)比較快,但運(yùn)行時(shí)性能和內(nèi)存管理效率不如server模式,通常用于客戶端應(yīng)用程序。相反,server模式啟動(dòng)比client慢,但可獲得更高的運(yùn)行性能。

windows上,缺省的虛擬機(jī)類型為client模式,如果要使用server模式,就需要在啟動(dòng)虛擬機(jī)時(shí)加-server參數(shù),以獲得更高性能,對(duì)服務(wù)器端應(yīng)用,推薦采用server模式,尤其是多個(gè)CPU的系統(tǒng)。在LinuxSolaris上缺省采用server模式。


-classpath,-cp

虛擬機(jī)在運(yùn)行一個(gè)類時(shí),需要將其裝入內(nèi)存,虛擬機(jī)搜索類的方式和順序如下:

Bootstrap classesExtension classesUser classes

Bootstrap 中的路徑是虛擬機(jī)自帶的jarzip文件,虛擬機(jī)首先搜索這些包文件,用System.getProperty("sun.boot.class.path")可得到虛擬機(jī)搜索的包名。


Extension是位于jre"lib"ext目錄下的jar文件,虛擬機(jī)在搜索完Bootstrap后就搜索該目錄下的jar文件。用System. getProperty("java.ext.dirs”)可得到虛擬機(jī)使用Extension搜索路徑。

User classes搜索順序?yàn)楫?dāng)前目錄、環(huán)境變量 CLASSPATH-classpath

-classpath告知虛擬機(jī)搜索目錄名、jar文檔名、zip文檔名,之間用分號(hào);分隔。

例如當(dāng)你自己開發(fā)了公共類并包裝成一個(gè)common.jar包,在使用common.jar中的類時(shí),就需要用-classpath common.jar 告訴虛擬機(jī)從common.jar中查找該類,否則虛擬機(jī)就會(huì)拋出java.lang.NoClassDefFoundError異常,表明未找到類定義。

在運(yùn)行時(shí)可用System.getProperty(“java.class.path”)得到虛擬機(jī)查找類的路徑。


使用-classpath后虛擬機(jī)將不再使用CLASSPATH中的類搜索路徑,如果-classpathCLASSPATH都沒有設(shè)置,則虛擬機(jī)使用當(dāng)前路徑(.)作為類搜索路徑。


推薦使用-classpath來定義虛擬機(jī)要搜索的類路徑,而不要使用環(huán)境變量CLASSPATH的搜索路徑,以減少多個(gè)項(xiàng)目同時(shí)使用CLASSPATH時(shí)存在的潛在沖突。例如應(yīng)用1要使用a1.0.jar中的類G,應(yīng)用2要使用a2.0.jar中的類G,a2.0.jara1.0.jar的升級(jí)包,當(dāng)a1.0.jara2.0.jar都在CLASSPATH中,虛擬機(jī)搜索到第一個(gè)包中的類G時(shí)就停止搜索,如果應(yīng)用1應(yīng)用2的虛擬機(jī)都從CLASSPATH中搜索,就會(huì)有一個(gè)應(yīng)用得不到正確版本的類G



轉(zhuǎn)自:http://www.tkk7.com/vesung/archive/2008/03/05/184041.html