@OverWrite BlogJava

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            128 隨筆 :: 0 文章 :: 29 評(píng)論 :: 0 Trackbacks

          -Xms<size>

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

          例如:-Xms6400K-Xms256M



          -Xmx<size>

          設(shè)置虛擬機(jī)內(nèi)存堆的最大可用大小,缺省單位為字節(jié)。該值必須為1024整數(shù)倍,并且要大于2MB。可用k(K)m(M)為單位來(lái)設(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è)置線(xiàn)程棧的大小,缺省單位為字節(jié)。與-Xmx類(lèi)似,也可用KM來(lái)設(shè)置較大的值。通常操作系統(tǒng)分配給線(xiàn)程棧的缺省大小為1MB

          另外也可在java中創(chuàng)建線(xiàn)程對(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模式,通常用于客戶(hù)端應(yīng)用程序。相反,server模式啟動(dòng)比client慢,但可獲得更高的運(yùn)行性能。

          windows上,缺省的虛擬機(jī)類(lèi)型為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è)類(lèi)時(shí),需要將其裝入內(nèi)存,虛擬機(jī)搜索類(lèi)的方式和順序如下:

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

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


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


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

          posted on 2008-03-05 16:39 vesung 閱讀(1674) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Java
          主站蜘蛛池模板: 成都市| 宕昌县| 临澧县| 旬阳县| 罗山县| 永清县| 巫溪县| 鞍山市| 平邑县| 合江县| 色达县| 嵩明县| 贵港市| 淄博市| 醴陵市| 松阳县| 宁武县| 宝鸡市| 泸西县| 福建省| 仙桃市| 蚌埠市| 德令哈市| 叶城县| 广东省| 普陀区| 嘉黎县| 郎溪县| 镇远县| 调兵山市| 新晃| 分宜县| 乌鲁木齐县| 大兴区| 宁陵县| 肥城市| 嵩明县| 冕宁县| 桑日县| 灌阳县| 会东县|