java高分局之JVM命令参数大全(非标准选项)

这些选项是java hotspot虚拟机专有的选项。

  • -X
    展示出所有可用的-X选项
  • -Xbatch
    禁止后台编译,默认JVM编译方法都是作为一个后台任务,编译完成后解释执行。使用此选项禁用后台编译,在前台编译完成后执行。
  • -Xbootclasspath:path
    指定一系列用分号分开的目录、jar、或者zip文件,从中搜索引导类文件,这些文件都包含在JDK中。
    不要在部署应用的时候使用这个选项覆盖rt.jar中的类,因为这违反JRE规范。
  • -Xbootclasspath/a:path
    在引导类路径的结尾指定一系列用分号分开的目录、jar、或者zip文件,从中搜索引导类文件。
    不要在部署应用的时候使用这个选项覆盖rt.jar中的类,因为这违反JRE规范。
  • -Xbootclasspath/p:path
    在引导类路径之前指定一系列用分号分开的目录、jar、或者zip文件,从中搜索引导类文件。
    不要在部署应用的时候使用这个选项覆盖rt.jar中的类,因为这违反JRE规范。
  • -Xcheck:jni
    对java本地接口方法添加额外的检查,在处理JNI请求之前会检查传递的参数和运行时环境数据。任何会产生问题的本地代码都会终止JVM。
    使用这个选项会降低性能。
  • -Xcomp
    你可以指定在编译之前需要解释执行的次数。使用XX:CompileThreshold选项。
  • -Xdebug
    提供向后兼容的能力。
  • -Xdiag
    显示额外的诊断信息
  • -Xfuture
    强制检查类文件格式,开发者被鼓励在开发时使用这个选项,因为在未来的版本中这个严格的检查会成为默认选项。
  • -Xint
    仅仅使用解释模式执行方法,编译成本地方法的功能被禁用,JIT编译带来的好处将不复存在。
  • -Xinternalversion
    比-version命令展示更多的JVM版本信息,然后退出。
  • -Xloggc:filename
    把GC信息输出到文件中,和verbose:gc的内容是一样的。如果这两个命令一起使用的话,Xloggc会覆盖verbose命令。
    比如:-Xloggc:garbage-collection.log
  • -Xmaxjitcodesize=size
    指定JIT编译代码的最大缓存,单位是字节。 也可以指定单位k(K)或m(M)。默认的最大缓存是240M。如果禁止分层编译的话,
    默认大小就是48M。-Xmaxjitcodesize=240m。这个选项和-XX:ReservedCodeCacheSize类似。
  • -Xmixed
    使用混合模式运行代码:解释模式和编译模式
  • -Xmnsize
    设置初试和最大的年轻代大小。可以指定单位k(K),m(M),g(G) .年轻代存储新创建的对象,这个区域的垃圾回收的频率要比其他区域
    高的多。如果这个区域太小了,那么垃圾回收的次数就会太多,如果太大了,垃圾回收就会浪费更多的时间。oracle建议年轻代的大小是
    堆总大小的四分之一到二分之一之间。下面的例子展示了怎么设置年轻代的大小为256m:
    -Xmn256m
    -Xmn262144k
    -Xmn268435456
    我们还可以通过其他两个选项来代替这个选项来指定年轻代最小和最大内存: -XX:NewSize 指定初始化大小。 -XX:MaxNewSize:指定最大内存。
  • -Xmssize
    设置初始化堆内存大小,这个值的大小必须是1024的倍数,并且大于1M, 可以指定单位k(K),m(M),g(G)。下面的例子把堆的初始化大小
    设置成6M。
    -Xms6291456
    -Xms6144k
    -Xms6m
    如果没有设置这个值,那么它的初始化大小就是年轻大和老年代的和。年轻代初始化大小可以通过-Xmn和-XX:NewSize 选项来指定。
  • -Xmxsize
    设置足底啊堆内存大小,这个值的大小必须是1024的倍数,并且大于2M,可以指定单位k(K),m(M),g(G)。默认值是根据运行时的系统配置来确定的。
    一般服务器部署时,把-Xms和-Xmx的值设置成相同的大小。下面的例子把堆最大内存设置成80M。
    -Xmx83886080
    -Xmx81920k
    -Xmx80m
    -Xmx选项和-XX:MaxHeapSize相同。
  • -Xnoclassgc
    禁止类的垃圾回收,这个以节省一些GC时间,缩短应用运行时的中断时间。
    当设置了这个选项的时候,类对象在GC时不会受到任何影响,它会被认为是一直存活的。这就使得更多的内存是永久保留的。如果使用不慎的话就会
    导致内存溢出的异常。
  • -Xprof
    在程序的运行过程中输出性能分析数据,这个选项一般作为开发过程中,不建议在生产环境中使用。
  • -Xrs
    减少JVM使用的操作系统信号。
    关闭钩子使得java应用通过执行用户的清理代码来循序的关闭(比如数据库连接),尽管JVM图鉴终止。
    JVM监控控制台,通过关闭钩子来防止意外终止。 通常,JVM注册一个控制台处理程序,它会开始关闭钩子并返回TURE,当遇到CTRL_C_EVENT, CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT, and CTRL_SHUTDOWN_EVENT.
    JVM使用相同的原理来实现线程栈的备份已达到调试的目的。JVM使用CTRL_BREAK_EVENT 来保证线程栈备份。
    如果JVM作为一个服务(比如:文本服务的servlet引擎),它可以接受CTRL_LOGOFF_EVENT,但是不会开始关闭,因为操作系统不会终止这个进程。
    我们可以使用-Xrs来避免这种情况,当使用这个选项的时候,JVM不会注册控制台处理程序,也就意味着不会监控CTRL_C_EVENT, CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT, or CTRL_SHUTDOWN_EVENT.这些事件。
    使用这个选项会导致两个后果:
    • Ctrl + Break 线程栈备份不再起作用
    • 用户代码必须为关闭钩子而负责,比如:当JVM终止的时候调用System.exit()。
  • -Xshare:mode
    设置类数据共享(CDS)模式。可能得mode参数如下:
    • auto:如果可能就是用CDS,这是32位 client模式JVM的默认值。
    • on:开启类数据共享。如果某个类共享不可用,那么将打印错误并退出。
    • off:关闭类共享。这是32位 server模式JVM、64位JVM的默认设置。
    • dump:手动生成CSD文档,你将为每一个新的JDK版本重新生成CDS文档。
  • -XshowSettings:category
    查看设置。可能的category参数如下。
    • all:所有的设置,这是默认值。
    • locale:本地设置。
    • properties:系统属性设置。
    • vm:JVM设置。
  • -Xsssize
    设置线程栈的大小。可以指定单位k(K),m(M),g(G)。默认值根据内存而定。
    下面的例子指定栈大小为1024KB:
    -Xss1m
    -Xss1024k
    -Xss1048576
    这个选项和-XX:ThreadStackSize相同。
  • -Xverify:mode
    设置字节码验证模式。字节码验证可以帮助我们找到一些问题。mode的参数如下:
    • none:不进行验证。这回节省应用启动时间,同时也减少了java提供的保护。
    • remote:验证那些不是被引导类加载器加载的类。这是默认的设置。
    • all:验证所有的类。
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐