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

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

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

    隨筆-314  評論-209  文章-0  trackbacks-0
    JDK工具 java命令詳解
    一、查看用法
     
    C:\>java -help
    Usage: java [-options] class [args...]
               (to execute a class)
       or  java [-options] -jar jarfile [args...]
               (to execute a jar file)
     
    where options include:
        -client       to select the "client" VM
        -server       to select the "server" VM
        -hotspot      is a synonym for the "client" VM  [deprecated]
                      The default VM is client.
     
        -cp <class search path of directories and zip/jar files>
        -classpath <class search path of directories and zip/jar files>
                      A ; separated list of directories, JAR archives,
                      and ZIP archives to search for class files.
        -D<name>=<value>
                      set a system property
        -verbose[:class|gc|jni]
                      enable verbose output
        -version      print product version and exit
        -version:<value>
                      require the specified version to run
        -showversion  print product version and continue
        -jre-restrict-search | -jre-no-restrict-search
                      include/exclude user private JREs in the version search
        -? -help      print this help message
        -X            print help on non-standard options
        -ea[:<packagename>...|:<classname>]
        -enableassertions[:<packagename>...|:<classname>]
                      enable assertions
        -da[:<packagename>...|:<classname>]
        -disableassertions[:<packagename>...|:<classname>]
                      disable assertions
        -esa | -enablesystemassertions
                      enable system assertions
        -dsa | -disablesystemassertions
                      disable system assertions
        -agentlib:<libname>[=<options>]
                      load native agent library <libname>, e.g. -agentlib:hprof
                        see also, -agentlib:jdwp=help and -agentlib:hprof=help
        -agentpath:<pathname>[=<options>]
                      load native agent library by full pathname
        -javaagent:<jarpath>[=<options>]
                      load Java programming language agent, see java.lang.instrument
     
    這個命令幫助是英文的,不知道JDK咋搞的,也不妨礙使用。
     
    另外,這個命令的非標(biāo)準(zhǔn)選項也是很重要的,常常在JVM優(yōu)化配置方面很關(guān)鍵,可以參看本人的JVM參數(shù)配置文章。
    C:\myproject>java -X
        -Xmixed           mixed mode execution (default)
        -Xint             interpreted mode execution only
        -Xbootclasspath:<directories and zip/jar files separated by ;>
                          set search path for bootstrap classes and resources
        -Xbootclasspath/a:<directories and zip/jar files separated by ;>
                          append to end of bootstrap class path
        -Xbootclasspath/p:<directories and zip/jar files separated by ;>
                          prepend in front of bootstrap class path
        -Xnoclassgc       disable class garbage collection
        -Xincgc           enable incremental garbage collection
        -Xloggc:<file>    log GC status to a file with time stamps
        -Xbatch           disable background compilation
        -Xms<size>        set initial Java heap size
        -Xmx<size>        set maximum Java heap size
        -Xss<size>        set java thread stack size
        -Xprof            output cpu profiling data
        -Xfuture          enable strictest checks, anticipating future default
        -Xrs              reduce use of OS signals by Java/VM (see documentation)
        -Xcheck:jni       perform additional checks for JNI functions
        -Xshare:off       do not attempt to use shared class data
        -Xshare:auto      use shared class data if possible (default)
        -Xshare:on        require using shared class data, otherwise fail.
     
     
    二、實踐
     
    老規(guī)矩,主要看看里面的參數(shù)(也叫開關(guān))的使用。環(huán)境接著上篇javac的環(huán)境。
     
     
    1、無參數(shù)情況
     
    2、-cp
    運行Java要使用類的全名來運行。如果遇到文件夾,則需要-cp設(shè)置到頂級包下面,例如
     
    3、-D
    設(shè)置一個系統(tǒng)屬性,在運行時候,可以通過System.getProperties()來獲取到。例如寫一段代碼:
    package com.lavasoft;

    import java.util.Properties;

    /**
    * 列舉系統(tǒng)的屬性
    * User: leizhimin
    * Date: 2008-11-12 21:25:08
    */

    public class TestProperty {
            public static void main(String[] args) {
                    //獲取系統(tǒng)屬性
                    Properties prop = System.getProperties();
                    //輸出所有到一個流上,
                    prop.list(System.out);
            }
    }
     
     
    如果在運行的時候加上一個參數(shù)-DmyProp=999999999,注意,中間不要添加任何空格。這樣就相當(dāng)于設(shè)置了一個系統(tǒng)屬性myProp,其值為999999999。
     
    一旦通過-DmyProp=999999999設(shè)置了這個系統(tǒng)屬性,在程序中就可以獲取到這個屬性。
     
    3、程序入?yún)?/div>
    是在運行的時候,給main方法傳遞參數(shù)。為了測試先寫一個測試類。
    package com.lavasoft;

    /**
    * 測試main方法的入?yún)?
    * User: leizhimin
    * Date: 2008-11-12 21:46:21
    */

    public class TestMainVar {
            public static void main(String[] args) {
                    System.out.println("入?yún)⒘斜砣缦拢?);
                    for(String arg:args){
                            System.out.println(arg);
                    }
            }
    }
     
     
    4、其他的選項
    有關(guān)選擇 客戶端/服務(wù)端VM、版本、運行在哪個版本下、是否使用斷言等一些不常用的選項。還可以查看
     
     
    5、-verbose[:class|gc|jni]
    查看虛擬機(jī)內(nèi)部動作。
     
     
     
    posted on 2009-12-04 17:15 xzc 閱讀(18006) 評論(4)  編輯  收藏 所屬分類: Java

    評論:
    # re: java命令詳解 2009-12-04 17:24 | xzc
    /bea/bea/jdk150_10/bin/java -server -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -DIBSS_HOME=/bea/odsapp

    -Xms1024m 初始化內(nèi)存
    -Xmx1024m 最大內(nèi)存
    -DIBSS_HOME=/bea/odsapp
    IBSS_HOME屬性,通System.getProperties()來可獲得.
      回復(fù)  更多評論
      
    # re: java命令詳解 2009-12-04 17:24 | xzc
    1.4.1 JVM堆大小的調(diào)整

    Sun HotSpot 1.4.1使用分代收集器,它把堆分為三個主要的域:新域、舊域以及永久域。JVM生成的所有新對象放在新域中。一旦對象經(jīng)歷了一定數(shù)量的垃圾收集循環(huán)后,便獲得使用期并進(jìn)入舊域。

    在永久域中JVM則存儲class和method對象。就配置而言,永久域是一個獨立域并且不認(rèn)為是堆的一部分。下面介紹如何控制這些域的大小。可使用-Xms和-Xmx 控制整個堆的原始大小或最大值。

    下面的命令是把初始大小設(shè)置為128M:



    Java –Xms128m



    –Xmx256m為控制新域的大小,可使用-XX:NewRatio設(shè)置新域在堆中所占的比例。下面的命令把整個堆設(shè)置成128m,新域比率設(shè)置成3,即新域與舊域比例為1:3,新域為堆的1/4或32M:



    Java –Xms128m –Xmx128m



    –XX:NewRatio =3可使用-XX:NewSize和-XX:MaxNewsize設(shè)置新域的初始值和最大值。

    下面的命令把新域的初始值和最大值設(shè)置成64m:



    Java –Xms256m –Xmx256m –Xmn64m



    永久域默認(rèn)大小為4m。運行程序時,JVM會調(diào)整永久域的大小以滿足需要。每次調(diào)整時,JVM會對堆進(jìn)行一次完全的垃圾收集。

    使用-XX:MaxPerSize標(biāo)志來增加永久域搭大小。在WebLogic Server應(yīng)用程序加載較多類時,經(jīng)常需要增加永久域的最大值。當(dāng)JVM加載類時,永久域中的對象急劇增加,從而使JVM不斷調(diào)整永久域大小。為了避免調(diào)整,可使用-XX:PerSize標(biāo)志設(shè)置初始值。下面把永久域初始值設(shè)置成32m,最大值設(shè)置成64m。



    Java -Xms512m -Xmx512m -Xmn128m

    -XX:PermSize=32m

    -XX:MaxPermSize=64m



    默認(rèn)狀態(tài)下,HotSpot在新域中使用復(fù)制收集器。該域一般分為三個部分。第一部分為Eden,用于生成新的對象。另兩部分稱為救助空間,當(dāng)Eden充滿時,收集器停止應(yīng)用程序,把所有可到達(dá)對象復(fù)制到當(dāng)前的from救助空間,一旦當(dāng)前的from救助空間充滿,收集器則把可到達(dá)對象復(fù)制到當(dāng)前的to救助空間。

    From和to救助空間互換角色。維持活動的對象將在救助空間不斷復(fù)制,直到它們獲得使用期并轉(zhuǎn)入舊域。使用-XX:SurvivorRatio可控制新域子空間的大小。

    同NewRation一樣,SurvivorRation規(guī)定某救助域與Eden空間的比值。比如,以下命令把新域設(shè)置成64m,Eden占32m,每個救助域各占16m:



    Java -Xms256m -Xmx256m -Xmn64m

    -XX:SurvivorRation =2



    如前所述,默認(rèn)狀態(tài)下HotSpot對新域使用復(fù)制收集器,對舊域使用標(biāo)記-清除-壓縮收集器。在新域中使用復(fù)制收集器有很多意義,因為應(yīng)用程序生成的大部分對象是短壽命的。理想狀態(tài)下,所有過渡對象在移出Eden空間時將被收集。

    如果能夠這樣的話,并且移出Eden空間的對象是長壽命的,那么理論上可以立即把它們移進(jìn)舊域,避免在救助空間反復(fù)復(fù)制。但是,應(yīng)用程序不能適合這種理想狀態(tài),因為它們有一小部分中長壽命的對象。

    最好是保持這些中長壽命的對象并放在新域中,因為復(fù)制小部分的對象總比壓縮舊域廉價。為控制新域中對象的復(fù)制,可用-XX:TargetSurvivorRatio控制救助空間的比例(該值是設(shè)置救助空間的使用比例。

    如救助空間位1M,該值50表示可用500K)。該值是一個百分比,默認(rèn)值是50。當(dāng)較大的堆棧使用較低的sruvivorratio時,應(yīng)增加該值到80至90,以更好利用救助空間。用-XX:maxtenuring threshold可控制上限。

    為放置所有的復(fù)制全部發(fā)生以及希望對象從eden擴(kuò)展到舊域,可以把MaxTenuring Threshold設(shè)置成0。設(shè)置完成后,實際上就不再使用救助空間了,因此應(yīng)把SurvivorRatio設(shè)成最大值以最大化Eden空間,設(shè)置如下:



    Java … -XX:MaxTenuringThreshold=0

    –XX:SurvivorRatio=50000 …

      回復(fù)  更多評論
      
    # re: java命令詳解 2009-12-04 17:25 | xzc
    眾所周知,java的JVM有一套自己的垃圾回收機(jī)制。因此在許多情況下并不需要java程序開發(fā)人員操太多的心。然而也許也因為這樣,往往會造成java程序員的過分依賴而致使開發(fā)出來的程序得不到很好的優(yōu)化,或者說性能尚能提高。
    問題的關(guān)鍵在于,不論JVM的垃圾回收機(jī)制做得多好,計算機(jī)的硬件資源是有限的。內(nèi)存更是一項緊張資源。因此雖然JVM為我們完成了大部分的垃圾回收。但適當(dāng)?shù)刈⒁饩幋a過程中的內(nèi)存管理還是很必要的。這樣能讓JVM回收得更順利更高效。最大限度地提高程序的效率。

    mark-1:避免在循環(huán)體內(nèi)創(chuàng)建對象。

    ……

    Object obj = null;//方式一

    for(int i =0; i 91k(1984k),0.0027537 secs]

    ……

    可以看到總共有1984kb的內(nèi)存被回收,耗時0.0027537秒。

    JVM內(nèi)存相關(guān)的參數(shù)

    -XX:NewSize(Set the Newgeneralnation heap size)

    -XX:MaxNewSize(Set the Maximum Newgeneralnation heap size)

    -XX:SurvivorRatio(Set New heap size ratios)

    -Xms(Set minimum heap size)

    -Xmx(Set maximum heap size)

    -Xnoclassgc(取消垃圾回收)

    -Xss(設(shè)置棧內(nèi)存的大小)

    例:java -XX:NewSize = 128m -XX:MaxNewSize = 128m - XX:SurvivorRatio = 8 -Xms 512m -Xmx 512m MyApplication

    mark-8:不同編譯方法的類大小

    (1)默認(rèn)編譯方式:javac K.java

    長度=代碼+源文件信息+代碼行序號表

    (2)調(diào)試編譯方式:javac -g K.java

    長度=代碼+源文件信息+代碼行序號表+本地變量表

    (3)代碼編譯方式:javax -g:none K.java

    長度=代碼

    mark-9:經(jīng)驗之談

    1.盡早釋放無用對象的引用(XX = null; )

    2.盡量少使用finalize函數(shù)。

    3.注意集合數(shù)據(jù)類型,如數(shù)組,樹,圖,鏈表等數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)對GC來說回收更復(fù)雜。

    4.避免在類的默認(rèn)構(gòu)造器中創(chuàng)建大量的,初始化大量的對象。

    5.避免強制系統(tǒng)做垃圾內(nèi)存回收。

    6.避免顯式申請數(shù)組空間,不得不顯式申請時,盡量準(zhǔn)確估計其合理值。

      回復(fù)  更多評論
      
    # re: java命令詳解 2015-10-30 08:15 | 黃浩
    大家好才是真的好  回復(fù)  更多評論
      
    主站蜘蛛池模板: ww在线观视频免费观看w| 亚洲中文字幕久久精品无码喷水 | 免费观看a级毛片| 99热在线免费播放| 中文字幕无线码免费人妻| 亚洲国产精品99久久久久久| 亚洲理论片在线中文字幕| 国产亚洲综合成人91精品| 免费在线黄色网址| 免费观看毛片视频| 无码永久免费AV网站| 91福利免费体验区观看区| 日韩免费高清播放器| 免费无码午夜福利片| 色五月五月丁香亚洲综合网| 亚洲娇小性xxxx| 亚洲不卡中文字幕| 亚洲无砖砖区免费| 久久精品国产亚洲av高清漫画| 亚洲综合AV在线在线播放| 亚洲日韩国产一区二区三区| 国产精品免费视频一区| 免费观看一级毛片| 午夜一级免费视频| 高清国语自产拍免费视频国产| 国产精品美女午夜爽爽爽免费| 免费黄色网址网站| 18禁免费无码无遮挡不卡网站 | 久久亚洲2019中文字幕| 亚洲麻豆精品国偷自产在线91| 成人亚洲综合天堂| 亚洲片国产一区一级在线观看| 免费永久国产在线视频| 午夜亚洲福利在线老司机| 亚洲AV伊人久久青青草原| 亚洲区不卡顿区在线观看| AV在线播放日韩亚洲欧| 亚洲熟妇无码AV在线播放| 亚洲AV无码一区二区二三区入口| 亚洲AV日韩精品久久久久| 久久精品国产亚洲av水果派|