<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    倉藍

    日記本

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      23 Posts :: 0 Stories :: 1 Comments :: 0 Trackbacks
    Java虛擬機技術(shù)參數(shù)應(yīng)用詳解
          JAVA虛擬機參數(shù)主要分為基本和擴展兩類,在命令行中輸入JAVA_HOME\bin\java 就可得到基本參數(shù)列表,在命令行輸入JAVA_HOME\bin\java –X 就可得到擴展參數(shù)列表。

      基本參數(shù)說明:

      -client,-server

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

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

      -hotspot

      含義與client相同,jdk1.4以前使用的參數(shù),jdk1.4開始不再使用,代之以client.

      -classpath,-cp

      虛擬機在運行一個類時,需要將其裝入內(nè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文檔名,之間用分號;分隔。

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

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

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

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

      -D<propertyName>=value

      在虛擬機的系統(tǒng)屬性中設(shè)置屬性名/值對,運行在此虛擬機之上的應(yīng)用程序可用System.getProperty(“propertyName”)得到value的值。

      如果value中有空格,則需要用雙引號將該值括起來,如-Dname=“space string”。

      該參數(shù)通常用于設(shè)置系統(tǒng)級全局變量值,如配置文件路徑,應(yīng)為該屬性在程序中任何地方都可訪問。

      -verbose[:class|gc|jni]

      在輸出設(shè)備上顯示虛擬機運行信息。

      verbose和verbose:class含義相同,輸出虛擬機裝入的類的信息,顯示的信息格式如下:

      [Loaded java.io.FilePermission$1 from shared objects file]

      當虛擬機報告類找不到或類沖突時可用此參數(shù)來診斷來查看虛擬機從裝入類的情況。

      -verbose:gc在虛擬機發(fā)生內(nèi)存回收時在輸出設(shè)備顯示信息,格式如下:

      [Full GC 268K->168K(1984K), 0.0187390 secs]

      該參數(shù)用來監(jiān)視虛擬機內(nèi)存回收的情況。

      -verbose:jni在虛擬機調(diào)用native方法時輸出設(shè)備顯示信息,格式如下:

      [Dynamic-linking native method HelloNative.sum …… JNI]

      該參數(shù)用來監(jiān)視虛擬機調(diào)用本地方法的情況,在發(fā)生jni錯誤時可為診斷提供便利。

      -version

      顯示可運行的虛擬機版本信息然后退出。一臺機器上裝有不同版本的JDK時

      -showversion

      顯示版本信息以及幫助信息。

      -ea[:<packagename>……|:<classname>]

      -enableassertions[:<packagename>……|:<classname>]

      從JDK1.4開始,java可支持斷言機制,用于診斷運行時問題。通常在測試階段使斷言有效,在正式運行時不需要運行斷言。斷言后的表達式的值是一個邏輯值,為true時斷言不運行,為false時斷言運行,拋出java.lang.AssertionError錯誤。

      上述參數(shù)就用來設(shè)置虛擬機是否啟動斷言機制,缺省時虛擬機關(guān)閉斷言機制,用-ea可打開斷言機制,不加<packagename>和 classname時運行所有包和類中的斷言,如果希望只運行某些包或類中的斷言,可將包名或類名加到-ea之后。例如要啟動包com.foo.util 中的斷言,可用命令 –ea:com.foo.util .

      -da[:<packagename>……|:<classname>]

      -disableassertions[:<packagename>……|:<classname>]

      用來設(shè)置虛擬機關(guān)閉斷言處理,packagename和classname的使用方法和-ea相同。

      -esa | -enablesystemassertions

      設(shè)置虛擬機顯示系統(tǒng)類的斷言。

      -dsa | -disablesystemassertions

      設(shè)置虛擬機關(guān)閉系統(tǒng)類的斷言。

      -agentlib:<libname>[=<options>]

      該參數(shù)是JDK5新引入的,用于虛擬機裝載本地代理庫。

      Libname為本地代理庫文件名,虛擬機的搜索路徑為環(huán)境變量PATH中的路徑,options為傳給本地庫啟動時的參數(shù),多個參數(shù)之間用逗號分隔。在Windows平臺上虛擬機搜索本地庫名為libname.dll的文件,在 Unix上虛擬機搜索本地庫名為libname.so的文件,搜索路徑環(huán)境變量在不同系統(tǒng)上有所不同,Linux、SunOS、IRIX上為 LD_LIBRARY_PATH,AIX上為LIBPATH,HP-UX上為SHLIB_PATH.

      例如可使用-agentlib:hprof來獲取虛擬機的運行情況,包括CPU、內(nèi)存、線程等的運行數(shù)據(jù),并可輸出到指定文件中,可用-agentlib:hprof=help來得到使用幫助列表。在jre\bin目錄下可發(fā)現(xiàn)hprof.dll文件。

      -agentpath:<pathname>[=<options>]

      設(shè)置虛擬機按全路徑裝載本地庫,不再搜索PATH中的路徑。其他功能和agentlib相同。

      -javaagent:<jarpath>[=<options>]

      虛擬機啟動時裝入java語言設(shè)備代理。Jarpath文件中的mainfest文件必須有Agent-Class屬性。代理類要實現(xiàn)public static void premain(String agentArgs, Instrumentation inst)方法。當虛擬機初始化時,將按代理類的說明順序調(diào)用premain方法。

      參見:java.lang.instrument

      擴展參數(shù)說明

      -Xmixed

      設(shè)置-client模式虛擬機對使用頻率高的方式進行Just-In-Time編譯和執(zhí)行,對其他方法使用解釋方式執(zhí)行。該方式是虛擬機缺省模式。

      -Xint

      設(shè)置-client模式下運行的虛擬機以解釋方式執(zhí)行類的字節(jié)碼,不將字節(jié)碼編譯為本機碼。

      -Xbootclasspath:path

      -Xbootclasspath/a:path

      -Xbootclasspath/p:path

      改變虛擬機裝載缺省系統(tǒng)運行包rt.jar而從-Xbootclasspath中設(shè)定的搜索路徑中裝載系統(tǒng)運行類。除非你自己能寫一個運行時,否則不會用到該參數(shù)。

      /a:將在缺省搜索路徑后加上path 中的搜索路徑。

      /p:在缺省搜索路徑前先搜索path中的搜索路徑。

      -Xnoclassgc

      關(guān)閉虛擬機對class的垃圾回收功能。

      -Xincgc

      啟動增量垃圾收集器,缺省是關(guān)閉的。增量垃圾收集器能減少偶然發(fā)生的長時間的垃圾回收造成的暫停時間。但濃漿泵增量垃圾收集器和應(yīng)用程序并發(fā)執(zhí)行,因此會占用部分CPU在應(yīng)用程序上的功能。

      -Xloggc:<file>

      將虛擬機每次垃圾回收的信息寫到日志文件中,文件名由file指定,文件格式是平文件,內(nèi)容和-verbose:gc輸出內(nèi)容相同。

      -Xbatch

      虛擬機的缺省運行方式是在后臺編譯類代碼,然后在前臺執(zhí)行代碼,使用-Xbatch參數(shù)將關(guān)閉虛擬機后臺編譯,在前臺編譯完成后再執(zhí)行。

      -Xms<size>

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

      例如:-Xms6400K,-Xms256M

      -Xmx<size>

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

      例如:-Xmx81920K,-Xmx80M

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

      -Xss<size>

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

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

      -Xprof

      輸出CPU運行時的診斷信息。

      -Xfuture

      對類文件進行嚴格格式檢查,以保證類代碼符合類代碼規(guī)范。為保持向后兼容,虛擬機缺省不進行嚴格的格式檢查。

      -Xrs

      減少虛擬機中操作系統(tǒng)的信號(singals)的使用。該參數(shù)通常用在虛擬機以后臺服務(wù)方式運行時使用(如Servlet)。

      -Xcheck:jni

      調(diào)用JNI函數(shù)時進行附加的檢查,特別地虛擬機將校驗傳遞給JNI函數(shù)參數(shù)的合法性,在本地代碼中遇到非法數(shù)據(jù)時,虛擬機將報一個致命錯誤而終止。使用該閥參數(shù)后將造成性能下降。

     

    posted on 2012-03-06 10:50 cangshi 閱讀(415) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 日韩免费码中文在线观看| 亚洲av成人一区二区三区观看在线| fc2免费人成为视频| 免费国产怡红院在线观看| 青青草国产免费国产是公开| 亚洲AV伊人久久青青草原| 国产亚洲精品2021自在线| 亚洲Av无码乱码在线播放| 七次郎成人免费线路视频| 中文字幕亚洲无线码a| 国产羞羞的视频在线观看免费| 亚洲AV日韩AV永久无码下载| **真实毛片免费观看| 色偷偷亚洲女人天堂观看欧| 成人最新午夜免费视频| 美女尿口扒开图片免费| 久久久久亚洲AV无码专区网站| 任你躁在线精品免费| 亚洲成aⅴ人片在线影院八| 一色屋成人免费精品网站| 亚洲成在人线在线播放无码 | 精品成在人线AV无码免费看 | 亚洲成a人无码亚洲成av无码| 四只虎免费永久观看| 国产免费久久久久久无码| 自怕偷自怕亚洲精品| 免费无码一区二区三区蜜桃大| 最好2018中文免费视频| 亚洲AV综合色一区二区三区| 国产精品成人免费福利| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲av永久无码精品三区在线4| 国产在线ts人妖免费视频| 久久久久免费视频| 亚洲六月丁香六月婷婷蜜芽| 国产免费AV片无码永久免费| 久久99毛片免费观看不卡| 亚洲已满18点击进入在线观看| 亚洲精品国产自在久久| 精品福利一区二区三区免费视频| 真人无码作爱免费视频|