java解释器的一些参数

来源:互联网 发布:数据库查询课程 编辑:程序博客网 时间:2024/06/06 16:24
只列举了常用的参数
1.java -verbose
输出解释执行时的操作的消息,比如加载了哪些类等
eg:  java -verbose HelloWorld
2.java -Xms
设置虚拟机最小堆内存
eg: java -Xms100M -Xmx200M HelloWorld   (M指MB)
java -jar -Xms2G -Xmx2G Server
3.java  -Xmx
设置虚拟机最大堆内存
eg:java -Xms100M -Xmx200M HelloWorld
附加说明:
在32位操作系统上堆内存最大为2GB,在64位操作系统上则没有限制。其大小可通过-Xms和-xmx来控制。
-Xms为JVM启动时申请的最小Heap内存,默认为物理内存的1/64但小于1GB。
-Xmx为JVM可申请的最大Heap内存,默认为物理内存的1/4但小于1GB,默认当空余堆内存小于40%时,JVM会增大Heap到-Xmx指定的大小,可通过-XX:MinHeapFreeRatio=来指定这个比例;当空余内存大于70%时,JVM会减小Heap的大小到-Xms指定的大小,可通过-XX:MaxHeapFreeRatio=来指定这个比例,对于运行系统而言,为避免在运行时频繁调整Heap的大小,通常将-Xms和-Xmx的值设置成一样的。

4.java -Xss
设定JVM方法栈大小
Stack的设定
每个线程都有他自己的Stack。Stack的大小限制着线程的数量和方法调用层次。Stack过大或者过小都可能会导致内存溢漏
eg: java -Xss1k HelloWorld


5.java -cp 或java -classpath
查找classpath的路径

6.java -enableassertions
开启断言
eg:java -enableassertions HelloAssert

9.java -version
查看版本

10.java -verbose:gc
输出每次gc的相关情况

11.java -verbose:jni
输出native方法调用的相关情况,一般用于诊断jni调用错误信息

12.java -client 与java -server
解释执行的效率较低,为提升代码的执行性能,sun jdk提供将字节码编译为机器码的支持
,编译在运行时时行 ,通常称为JIT编译器。Sun Jdk在执行过程中对执行频率高的代码进行编译,对执行不频繁的代码则
继续采用解释的方式,因为Sun Jdk又叫Hotspot VM,在编译上Sun Jdk提供了两种模式:client compiler(-client)和
server compiler(-server)。
client compiler又称为C1,较为轻量级,只做少量性能开销比高的优化,它占用内存少,适合于桌面交互应用。
Server compiler又称为C2,较为重量级,C2采用大量传统编译技巧来进行优化,占用内存相对多一些,适合于服务端
应用。
java -client就是选择编译模式为C1;java -server就是选择编译模式为C2。
默认情况下,Sun JDK根据机器配置来选择client或server模式,当机器配置的CPU超过2核且内存走过2GB即默认为
server模式,但在32位windows机器上始终选择的都是client模式,也可在启动时通过增加-client或-server来强制指定。

13.java -jar
指定以jar包的形式执行一个应用程序。
要这样执行一个应用程序,必须让jar包的manifest文件中声明初始加载的Main-class,当然那Main-class必须有
publics tatic void main(String[]args)方法。


14.java -verbose:class
这个JVM启动参数中的标准参数用来输出jvm载入类的相关信息,当jvm报告说找不到类或者类冲突时可此进行诊断。
eg:java -verbose:class HelloWorld

原创粉丝点击