日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

java指令详解

發(fā)布時間:2023/11/27 生活经验 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java指令详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Java是通過java虛擬機(jī)來裝載和執(zhí)行編譯文件(class文件)的,
java虛擬機(jī)通過命令java option 來啟動,-option為虛擬機(jī)參數(shù),通過這些參數(shù)可對虛擬機(jī)的運行狀態(tài)進(jìn)行調(diào)整.

一、如何查看參數(shù)列表:

虛擬機(jī)參數(shù)分為基本和擴(kuò)展兩類:
在命令行中輸入java可得到基本參數(shù)列表,java -X則可得到擴(kuò)展參數(shù)列表。

注:以上假設(shè)已經(jīng)把JAVA_HOME\bin路徑加入到了path路徑

?

二、基本參數(shù)說明:

1. -classpath,-cp

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

Bootstrap classes,Extension classes,User classes。

Bootstrap
中的路徑是虛擬機(jī)自帶的jar或zip文件,虛擬機(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
搜索順序為當(dāng)前目錄、環(huán)境變量CLASSPATH、-classpath

?

-cp 和 -classpath 是同義詞,參數(shù)意義是一樣的。
classpath參數(shù)太長了,所以提供cp作為縮寫形式,它們用于告知虛擬機(jī)搜索的目錄名、jar文檔名、zip文檔名,之間用分號;分隔。

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

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

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

推薦使用-classpath來定義虛擬機(jī)要搜索的類路徑,而不要使用環(huán)境變量 CLASSPATH的搜索路徑,以減少多個項目同時使用CLASSPATH時存在的潛在沖突。

例如應(yīng)用1要使用a1.0.jar中的類G,應(yīng)用2要使用 a2.0.jar中的類G,a2.0.jar是a1.0.jar的升級包,當(dāng)a1.0.jar,a2.0.jar都在CLASSPATH中,
虛擬機(jī)搜索到第一個包中的類G時就停止搜索,

如果應(yīng)用1,應(yīng)用2的虛擬機(jī)都從CLASSPATH中搜索,就會有一個應(yīng)用得不到正確版本的類G。

實例1:java -classpath lib\Launcher.jar com.teleca.robin.Launcher getProcessState.bat 5000

實例2:java -classpath classes com.teleca.robin.Launcher getProcessState.bat 5000


如果需要指定各個JAR文件具體的存放路徑,相同路徑有多個可使用通配符。

示例1:
java -cp .;c:\classes\myClass.jar;d:\classes\*.jar packname.mainclassname

實例2:
java -cp lib\*.jar com.teleca.robin.Launcher getProcessState.bat 5000

實例3:
java -cp Util.jar;lib\sqljdbc.jar com.harry.j2se.AppEntrance

?


2. -D<propertyName>=value

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

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

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

示例1:
設(shè)置虛擬機(jī)使用的Extension搜索路徑

java -Djava.ext.dirs=lib MyClass

?

3. -client,-server

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

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

?

4. -hotspot

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

?

5. -verbose[:class|gc|jni]

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

verbose和verbose:class含義相同,輸出虛擬機(jī)裝入的類的信息,顯示的信息格式如下:
[Loaded java.io.FilePermission$1 from shared objects file]

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


6. -verbose:gc

在虛擬機(jī)發(fā)生內(nèi)存回收時在輸出設(shè)備顯示信息,格式如下:
[Full GC 268K->168K(1984K), 0.0187390 secs]

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


7. -verbose:jni

在虛擬機(jī)調(diào)用native方法時輸出設(shè)備顯示信息,格式如下:
[Dynamic-linking native method HelloNative.sum ... JNI]

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

?


9. -version

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

?

10. -showversion

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

?

11. -ea[:<packagename>...|:<classname>] 和
-enableassertions[:<packagename>...|:<classname>]

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

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

注:ea是enableassertions的縮寫

?

12. -da[:<packagename>...|:<classname>] 和
-disableassertions[:<packagename>...|:<classname>]

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

注:da應(yīng)該是disableassertions的縮寫

?


13.-esa 和-enablesystemassertions

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

注:esa是enablesystemassertions的縮寫

?

15.-dsa 和-disablesystemassertions

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

注:dsa是disablesystemassertions的縮寫

?


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

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

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

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

?

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

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

?

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

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

?


三、擴(kuò)展參數(shù)說明

1. -Xmixed

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


2. -Xint

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

?

3. -Xbootclasspath:path和-Xbootclasspath/a:path及-Xbootclasspath/p:path

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

  /a:將在默認(rèn)搜索路徑后加上path中的搜索路徑。

  /p:將在默認(rèn)搜索路徑前先搜索path中的搜索路徑。

?

4. -Xnoclassgc

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

?

5. -Xincgc

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

?

6. -Xloggc:<file>

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

?

7. -Xbatch

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

?

8. -Xms<size>

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

例如:-Xms6400K,-Xms256M

?

9. -Xmx<size>

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

例如:-Xmx81920K,-Xmx80M

當(dāng)應(yīng)用程序申請了大內(nèi)存運行當(dāng)當(dāng)前虛擬機(jī)最大內(nèi)存不夠用時,虛擬機(jī)拋出java.lang.OutOfMemoryError: Java heap space錯誤,此時就需要使用-Xmx設(shè)置堆的最大值

?

10. -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)。

?

11. -Xprof

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

?

12. -Xfuture

對類文件進(jìn)行嚴(yán)格格式檢查,以保證類代碼符合類代碼規(guī)范。為保持向后兼容,虛擬機(jī)默認(rèn)不進(jìn)行嚴(yán)格的格式檢查。

?

13. -Xrs

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

?

14. -Xcheck:jni

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

?

轉(zhuǎn)載于:https://www.cnblogs.com/wyzhou/p/9749122.html

總結(jié)

以上是生活随笔為你收集整理的java指令详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。