`
wjm0729
  • 浏览: 15559 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

java 命令 -- 转 XZC.Log

    博客分类:
  • java
阅读更多

 

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优化配置方面很关键,可以参看本人的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.

二、实践
 
老规矩,主要看看里面的参数(也叫开关)的使用。环境接着上篇javac的环境。
 
 
1、无参数情况
 
2、-cp
运行Java要使用类的全名来运行。如果遇到文件夹,则需要-cp设置到顶级包下面,例如
 
3、-D
设置一个系统属性,在运行时候,可以通过System.getProperties()来获取到。例如写一段代码:
package com.lavasoft; 

import java.util.Properties; 

/** 
* 列举系统的属性 
* User: leizhimin 
* Date: 2008-11-12 21:25:08 
*/
 
public class TestProperty { 
        public static void main(String[] args) { 
                //获取系统属性 
                Properties prop = System.getProperties(); 
                //输出所有到一个流上, 
                prop.list(System.out); 
        } 
}
 
 
如果在运行的时候加上一个参数-DmyProp=999999999,注意,中间不要添加任何空格。这样就相当于设置了一个系统属性myProp,其值为999999999。
 
一旦通过-DmyProp=999999999设置了这个系统属性,在程序中就可以获取到这个属性。
 
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]
查看虚拟机内部动作。

----------------------------------------------------------------------------------------

/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()来可获得. 

-----------------------------------------------------------------------------------------
1.4.1 JVM堆大小的调整 

Sun HotSpot 1.4.1使用分代收集器,它把堆分为三个主要的域:新域、旧域以及永久域。JVM生成的所有新对象放在新域中。一旦对象经历了一定数量的垃圾收集循环后,便获得使用期并进入旧域。 

在永久域中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 



默认状态下,HotSpot在新域中使用复制收集器。该域一般分为三个部分。第一部分为Eden,用于生成新的对象。另两部分称为救助空间,当Eden充满时,收集器停止应用程序,把所有可到达对象复制到当前的from救助空间,一旦当前的from救助空间充满,收集器则把可到达对象复制到当前的to救助空间。 

From和to救助空间互换角色。维持活动的对象将在救助空间不断复制,直到它们获得使用期并转入旧域。使用-XX:SurvivorRatio可控制新域子空间的大小。 

同NewRation一样,SurvivorRation规定某救助域与Eden空间的比值。比如,以下命令把新域设置成64m,Eden占32m,每个救助域各占16m: 



Java -Xms256m -Xmx256m -Xmn64m 

-XX:SurvivorRation =2 



如前所述,默认状态下HotSpot对新域使用复制收集器,对旧域使用标记-清除-压缩收集器。在新域中使用复制收集器有很多意义,因为应用程序生成的大部分对象是短寿命的。理想状态下,所有过渡对象在移出Eden空间时将被收集。 

如果能够这样的话,并且移出Eden空间的对象是长寿命的,那么理论上可以立即把它们移进旧域,避免在救助空间反复复制。但是,应用程序不能适合这种理想状态,因为它们有一小部分中长寿命的对象。 

最好是保持这些中长寿命的对象并放在新域中,因为复制小部分的对象总比压缩旧域廉价。为控制新域中对象的复制,可用-XX:TargetSurvivorRatio控制救助空间的比例(该值是设置救助空间的使用比例。 

如救助空间位1M,该值50表示可用500K)。该值是一个百分比,默认值是50。当较大的堆栈使用较低的sruvivorratio时,应增加该值到80至90,以更好利用救助空间。用-XX:maxtenuring threshold可控制上限。 

为放置所有的复制全部发生以及希望对象从eden扩展到旧域,可以把MaxTenuring Threshold设置成0。设置完成后,实际上就不再使用救助空间了,因此应把SurvivorRatio设成最大值以最大化Eden空间,设置如下: 



Java … -XX:MaxTenuringThreshold=0 

–XX:SurvivorRatio=50000 … 

-----------------------------------------------------------------------------------------
众所周知,java的JVM有一套自己的垃圾回收机制。因此在许多情况下并不需要java程序开发人员操太多的心。然而也许也因为这样,往往会造成java程序员的过分依赖而致使开发出来的程序得不到很好的优化,或者说性能尚能提高。 
问题的关键在于,不论JVM的垃圾回收机制做得多好,计算机的硬件资源是有限的。内存更是一项紧张资源。因此虽然JVM为我们完成了大部分的垃圾回收。但适当地注意编码过程中的内存管理还是很必要的。这样能让JVM回收得更顺利更高效。最大限度地提高程序的效率。 

mark-1:避免在循环体内创建对象。 

…… 

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.避免在类的默认构造器中创建大量的,初始化大量的对象。 

5.避免强制系统做垃圾内存回收。 

6.避免显式申请数组空间,不得不显式申请时,尽量准确估计其合理值。


分享到:
评论

相关推荐

    基于Netty实现的MQTT客户端_netty-mqtt-client.zip

    基于Netty实现的MQTT客户端_netty-mqtt-client

    spark-xzc:星火xzc

    要开始使用"Spark-xzc",首先需要下载并解压提供的"spark-xzc-master"压缩包。接下来,你需要一个支持Scala和Spark的开发环境,如IntelliJ IDEA或Eclipse,安装相应的Scala和Spark插件。然后导入项目,根据项目的...

    linux下使用ssh远程执行命令批量导出数据库到本地

    " | mysql xzc_db -uxzc -pxzcpwd'` 是在远程服务器上执行的命令,它将SQL查询(选取user表的所有记录)传递给MySQL,并输出结果。 4. `&gt;` 将输出重定向到本地的`user.txt`文件。 如果想要将数据导出为Excel格式,...

    Cygwin相关资料

    Cygwin是一个在Windows操作系统...参考文献包括:[http://xzc.2000y.net/mb/2/readnews.asp?newsid=561284](http://xzc.2000y.net/mb/2/readnews.asp?newsid=561284)和[http://lostu.blogbus.com/logs/10765519.html]...

    利用CSS3伪元素实现逐渐发光的方格边框

    &lt;img src="http://tva2.sinaimg.cn/crop.0.0.180.180.180/6830a53bjw8f2qo4xzc2zj20500500t0.jpg"/&gt; &lt;div class="light-inner"&gt; 前端开发博客 关注前端开发 ``` 接下来,我们编写CSS样式来实现发光边框。...

    an mcnp primer

    - **圆柱面**: 可分为X、Y、Z轴方向的圆柱面,分别使用关键字“xyc”、“xzc”和“yzc”。 - **球面**: 使用关键字“s”定义,形式为:`s x y z r`。 - **锥面**: 可分为X、Y、Z轴方向的锥面,分别使用关键字“xc”...

    二阶魔方的最少步打乱 Apare_xzc

    Apare_xzc 2020.2.20 13:17 前言:  博主xzc是一个魔方爱好者,三阶sub 25s。虽然水平不高,但是对魔方十分热爱。博主对二阶魔方编码,然后通过bfs得到了二阶魔方的全部状态。 下面是得到的最少步打乱。  最少步...

    ZYNQ-ZC7020硬件原理图和PCB图

    《ZYNQ-ZC7020硬件设计详解——基于原理图与PCB图的解析》 ZYNQ-ZC7020是一款基于赛灵思(Xilinx)公司的Zynq-7000系列All Programmable SoC的开发板,它集成了ARM Cortex-A9双核处理器和可编程逻辑单元(FPGA),在...

    oracle学习笔记

    - 使用`sqlplus/nolog`命令匿名登录Oracle。 - 输入`conn/assysdba`切换至`sysdba`权限。 - 创建表空间、临时表空间及用户,并赋予相应权限。 - **创建表空间**:例如创建名为`vincentSpace`的表空间。 ```sql ...

    cs2-lab4-wordcount-java:Loyola COMP 271实验4

    Loyola COMP 271实验4:布景和地图 小组活动 与队友合作,但要单独提交。 清楚列出您的团队成员。... xzc EOF (ctrl-D or ctrl-Z) asdf=4 oiu=4 qwer=3 xzc=1 特别: 完成各种来源中的TODO项目,

    现代数控系统

    现代数控系统往往配备有专门的控制器,例如文档中提到的H6C-T和H6CL-T控制器,它们负责读取和处理输入信号(如G31Input、DAC-2Output、DAC-1Output、ADC-2Input、ADC-1Input和XZC主轴信号),以及执行加工程序和用户...

    Z460-Z560-G460-G560_BIOS模拟器

    BIOS(基本输入输出系统)是计算机硬件与操作系统之间的关键桥梁,它负责初始化硬件设备并在启动过程中执行必要的自检程序。在本主题中,我们主要关注的是针对华硕Z460、Z560、G460和G560笔记本电脑系列的BIOS模拟器...

    Lab8-carolinacervantes

    ./build/scripts/cs2-lab10-wordcount-java asdf oiu qwer asdf oiu oiu qwer qwer oiu asdf asdf xzc EOF (ctrl-D or ctrl-Z) asdf=4 oiu=4 qwer=3 xzc=1 具体来说: 完成各种来源中的TODO项目,直到...

    SAP自定义帮助搜索

    ### SAP自定义帮助搜索知识点详解 #### 一、引言 在SAP系统中,为了提高数据查询效率和用户体验,通常会使用到“帮助搜索”功能。然而,在实际操作过程中,用户可能会遇到某些特定需求未被满足的情况,比如需要...

    VC6 斑马打印机Demo

    自己做的时候一直没有找到VC6下的Demo,深感痛苦,希望后来者能少走点弯路。此Demo适应于斑马打印机105sl,包括串口和并口。另外斑马打印机的串口为专用的串口线,如果需要可以给我发...Email:xzc02106430@163.com

    塔吊电气原理图PPT学习教案.pptx

    XZC和XFC是总的正反接触器,而直流制动电路用于电机停止时的快速制动。双速电机(双Y型接线)在不同工况下提供不同的转速。启动时,电源经过热继电器FR的常闭触点,相序保护XJ,欠压接触器XBQ1,然后由SQ启动按钮...

    一种基于AVR单片机的风速检定装置-论文

    XZC2—2G型风速风向传感器是一款能够实时测量风速和风向值的设备,适用于船舶航行环境。随着该型传感器的生产和维修数量增加,对于保障其出厂质量及维修速度的需求也在提高。 综上所述,本文所述的风速检定装置利用...

    一株大质粒决定的耐镉假单胞菌的鉴定与耐受性分析 (2015年)

    分离到一株耐镉菌株XZC1,结合菌落特征和16S rDNA序列对其进行鉴定,将该菌在舍Cd2+液体LB培养基中进行连续培养,获得菌体生长情况,分析该菌株镉耐性是否与质粒相关,检测菌株对其他几种重金属的耐性。结果表明,该...

    ccminer:mtp矿工发展

    XZC: aChWVb8CpgajadpLmiwDZvZaKizQgHxfh5 基于Christian Buchner和Christian H.的CUDA项目和tpruvot @ github。 在Windows上建立 必需:msvc2015和cuda 9.2或更高版本(首选cuda 10.1)Windows的依赖项包含在compat...

    tophat-fusion介绍使用

    tophat-fusion介绍使用,详细讲解了tophat,bowtie,tophat-fusion,cufflink软件,以及RNA-seq的使用过程

Global site tag (gtag.js) - Google Analytics