<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咋搞的,也不妨礙使用。
     
    另外,這個命令的非標準選項也是很重要的,常常在JVM優(yōu)化配置方面很關鍵,可以參看本人的JVM參數配置文章。
    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ī)矩,主要看看里面的參數(也叫開關)的使用。環(huán)境接著上篇javac的環(huán)境。
     
     
    1、無參數情況
     
    2、-cp
    運行Java要使用類的全名來運行。如果遇到文件夾,則需要-cp設置到頂級包下面,例如
     
    3、-D
    設置一個系統(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);
            }
    }
     
     
    如果在運行的時候加上一個參數-DmyProp=999999999,注意,中間不要添加任何空格。這樣就相當于設置了一個系統(tǒng)屬性myProp,其值為999999999。
     
    一旦通過-DmyProp=999999999設置了這個系統(tǒng)屬性,在程序中就可以獲取到這個屬性。
     
    3、程序入參
    是在運行的時候,給main方法傳遞參數。為了測試先寫一個測試類。
    package com.lavasoft;

    /**
    * 測試main方法的入參
    * User: leizhimin
    * Date: 2008-11-12 21:46:21
    */

    public class TestMainVar {
            public static void main(String[] args) {
                    System.out.println("入參列表如下:");
                    for(String arg:args){
                            System.out.println(arg);
                    }
            }
    }
     
     
    4、其他的選項
    有關選擇 客戶端/服務端VM、版本、運行在哪個版本下、是否使用斷言等一些不常用的選項。還可以查看
     
     
    5、-verbose[:class|gc|jni]
    查看虛擬機內部動作。
     
     
     
    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 初始化內存
    -Xmx1024m 最大內存
    -DIBSS_HOME=/bea/odsapp
    IBSS_HOME屬性,通System.getProperties()來可獲得.
      回復  更多評論
      
    # re: java命令詳解 2009-12-04 17:24 | xzc
    1.4.1 JVM堆大小的調整

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

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

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



    Java –Xms128m



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



    Java –Xms128m –Xmx128m



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

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



    Java –Xms256m –Xmx256m –Xmn64m



    永久域默認大小為4m。運行程序時,JVM會調整永久域的大小以滿足需要。每次調整時,JVM會對堆進行一次完全的垃圾收集。

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



    Java -Xms512m -Xmx512m -Xmn128m

    -XX:PermSize=32m

    -XX:MaxPermSize=64m



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

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

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



    Java -Xms256m -Xmx256m -Xmn64m

    -XX:SurvivorRation =2



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

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

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

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

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



    Java … -XX:MaxTenuringThreshold=0

    –XX:SurvivorRatio=50000 …

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

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

    ……

    Object obj = null;//方式一

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

    ……

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

    JVM內存相關的參數

    -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(設置棧內存的大?。?

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

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

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

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

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

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

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

    長度=代碼

    mark-9:經驗之談

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

    2.盡量少使用finalize函數。

    3.注意集合數據類型,如數組,樹,圖,鏈表等數據結構,這些數據結構對GC來說回收更復雜。

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

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

    6.避免顯式申請數組空間,不得不顯式申請時,盡量準確估計其合理值。

      回復  更多評論
      
    # re: java命令詳解 2015-10-30 08:15 | 黃浩
    大家好才是真的好  回復  更多評論
      
    主站蜘蛛池模板: 亚洲欧洲日产国码高潮αv| 国产免费av片在线无码免费看| 国产亚洲精品成人a v小说| 国产成人亚洲午夜电影| 午夜成人免费视频| 亚洲av成人综合网| 国产卡一卡二卡三免费入口| 亚洲国产成a人v在线| 最近免费字幕中文大全视频| 亚洲国产精品无码久久久| 青青草a免费线观a| 亚洲成a人无码亚洲成www牛牛| 成年女人午夜毛片免费看| 亚洲人av高清无码| 亚洲成A∨人片天堂网无码| 男女拍拍拍免费视频网站| 亚洲AV无码精品无码麻豆| 1000部拍拍拍18勿入免费视频软件| 亚洲欧洲日产专区| 日韩免费视频观看| 两个人www免费高清视频| 亚洲男人都懂得羞羞网站| www.黄色免费网站| 真人无码作爱免费视频| 亚洲精品无码午夜福利中文字幕 | 精品亚洲aⅴ在线观看| 国产成人免费在线| 久久亚洲精品高潮综合色a片| 亚洲午夜精品一级在线播放放| 18禁在线无遮挡免费观看网站| 亚洲字幕在线观看| www国产亚洲精品久久久| 在线观看免费无码专区| 亚洲an日韩专区在线| 亚洲av无码专区在线观看素人| 免费在线观看一级片| 中文字幕在线观看亚洲视频| 亚洲精品视频免费| 91精品免费久久久久久久久| 国产亚洲精品精品精品| 久久亚洲精品国产精品|