余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

JAVA命令之非标准选项

xiyangw 2023-05-14 11:46 18 浏览 0 评论

这些选项是特定于Java HotSpot虚拟机的通用选项

-X

显示所有可用的-X选项的帮助

JAVA命令之非标准选项


-Xbatch

禁用后台编译。

默认情况下,JVM将方法编译为后台任务,以解释器模式运行该方法,直到后台编译完成。

-Xbatch标志禁用后台编译,以便所有方法的编译都作为前台任务进行,直到完成。

该选项等效于:

-XX:-BackgroundCompilation

-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)功能执行其他检查

具体来说,它将在处理JNI请求之前验证传递给JNI函数的参数和运行时环境数据

遇到的任何无效数据都表明本机代码存在问题,在这种情况下,JVM将终止并出现不可恢复的错误。使用此选项时性能会下降


-Xcomp

在第一次调用时强制编译方法

默认情况下,客户端VM(-client)执行1,000个解释方法调用,服务器VM(-server)执行10,000个解释方法调用,以收集信息以进行有效的编译

指定-Xcomp选项会禁用解释的方法调用, 从而以提高效率为代价来提高编译性能

您还可以使用如下示例选项在编译之前更改解释方法的调用次数

-XX:CompileThreshold 

-Xdebug

什么也不做。提供向后兼容性


-Xdiag

显示其他诊断消息


-Xfuture

启用严格的类文件格式检查,以强制严格遵守类文件格式规范

鼓励开发人员在开发新代码时使用此标志, 因为更严格的检查将成为未来版本的默认做法


-Xint

以仅解释模式运行应用程序

禁用对本机代码的编译,所有字节码都由解释器执行。在这种模式下,JIT编译器提供的性能优势是不存在的


-Xinternalversion

显示比-version选项更详细的JVM版本信息然后退出


-Xloggc:filename

设置应将详细的GC事件信息重定向到该文件以进行日志记录的文件

写入此文件的信息与 -verbose:gc 的输出类似,只是从每个记录的事件之前的第一个GC事件以来经过的时间

如果两者都使用相同的Java命令给出,则 -Xloggc 选项将覆盖 -verbose:gc

示例

-Xloggc:garbage-collection.log

-Xmaxjitcodesize=size

指定JIT编译代码的最大代码缓存大小(以字节为单位)

字母k或K表示千字节,m或M表示兆字节,g或G表示千兆字节

默认的最大代码高速缓存大小为240 MB;默认值为0

如果使用选项 -XX:-TieredCompilation 禁用分层编译,则默认大小为48 MB:

-Xmaxjitcodesize=240m

此选项等效于 -XX:ReservedCodeCacheSize


-Xmixed

由解释器执行所有字节码,但热方法除外,后者被编译为本机代码


-Xmnsize

设置年轻代(nursery)的堆的初始大小和最大大小(以字节为单位)

字母k或K表示千字节,m或M表示兆字节,g或G表示千兆字节

堆的年轻代区域用于新对象。与其他区域相比,在该区域执行GC的频率更高

如果年轻一代的大小太小,则会执行许多次要的垃圾回收

如果大小太大,那么将仅执行完整的垃圾收集,这可能需要很长时间才能完成

Oracle建议您将年轻代的大小保持在整个堆大小的一半到四分之一之间

以下示例说明如何使用各种单位将年轻代的初始大小和最大大小设置为256 MB

-Xmn256m
-Xmn262144k
-Xmn268435456

可以使用-XX:NewSize设置初始大小,使用-XX:MaxNewSize设置最大大小,而不用-Xmn选项来设置年轻一代的堆的初始大小和最大大小


-Xmssize

设置堆的初始大小(以字节为单位)

此值必须是1024的倍数且大于1 MB

字母k或K表示千字节,m或M表示兆字节,g或G表示千兆字节

以下示例说明如何使用各种单位将分配的内存大小设置为6 MB

-Xms6291456
-Xms6144k
-Xms6m

如果未设置此选项,则初始大小将设置为为老年代和年轻代分配的大小之和

可以使用 -Xmn 选项或 -XX:NewSize 选项来设置年轻一代的堆的初始大小


-Xmxsize

指定内存分配池的最大大小(以字节为单位)

此值必须是1024的倍数且大于2 MB

字母k或K表示千字节,m或M表示兆字节,g或G表示千兆字节

默认值是在运行时根据系统配置选择的

对于服务器部署,通常将-Xms和-Xmx设置为相同的值

请参阅《 Java SE HotSpot虚拟机垃圾收集优化指南》中的“Ergonomics”部分

https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/ergonomics.html#ergonomics

下面的示例演示如何使用各种单位将分配的最大内存大小设置为80 MB

-Xmx83886080
-Xmx81920k
-Xmx80m

-Xmx选项等效于 -XX:MaxHeapSize


-Xnoclassgc

禁用类的垃圾收集(GC)。这样可以节省一些GC时间,从而缩短了应用程序运行期间的中断时间

在启动时指定-Xnoclassgc时,应用程序中的类对象在GC期间将保持不变,并且始终被认为是活动的

这可能导致更多的内存被永久占用,如果不谨慎使用,将抛出内存不足异常


-Xprof

概要分析正在运行的程序,并将概要分析数据发送到标准输出

此选项作为实用程序提供,在程序开发中很有用,并不打算在生产系统中使用


-Xrs

减少JVM对操作系统信号的使用

即使JVM突然终止,关闭挂钩也可以通过在关闭时运行用户清理代码(例如关闭数据库连接)来有序关闭Java应用程序

JVM监视控制台控制事件,以实现用于异常终止的关闭钩子

具体地说,JVM注册了一个控制台控制处理程序,该处理程序开始进行关机挂钩处理并返回 CTRL_C_EVENTTRUE, CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT, and CTRL_SHUTDOWN_EVENT

JVM使用类似的机制来实现转储线程堆栈的功能,以进行调试

JVM使用CTRL_BREAK_EVENT执行线程转储

如果JVM作为服务运行(例如,作为Web服务器的servlet引擎),则它可以接收CTRL_LOGOFF_EVENT,但不应启动关机,因为操作系统实际上不会终止该进程

为避免此类干扰,可以使用 -Xrs 选项。使用 -Xrs 选项时,JVM不会安装控制台控制处理程序,这意味着它不会监视或处理CTRL_C_EVENTCTRL_CLOSE_EVENTCTRL_LOGOFF_EVENTCTRL_SHUTDOWN_EVENT

指定 -Xrs 有两个结果:

  • Ctrl + Break线程转储不可用
  • 用户代码负责导致关机挂钩运行,例如,当终止JVM时,通过调用System.exit()来执行

-Xshare:mode

设置类数据共享(CDS)模式。此选项的可能模式参数包括

  • auto
    • 如果可能的话,使用CDS。这是Java HotSpot 32位客户端虚拟机的默认值
  • on
    • 要求使用CDS。如果不能使用类数据共享,则打印错误消息并退出
  • off
    • Java HotSpot 32-Bit Server VM, Java HotSpot 64-Bit Client VM, and Java HotSpot 64-Bit Server VM. 的默认值。不要使用CDS
  • dump
    • 手动生成CDS存档。按照“设置类路径”中的说明指定应用程序类路径. 您应该在每个新的JDK版本中重新生成CDS存档, 设置类路径

https://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html#CBHHCGFB


-XshowSettings:category

显示设置并继续。此选项的可能类别参数包括

  • all
    • 显示所有类别的设置。这是默认值
  • locale
    • 显示与区域设置相关的设置
  • properties
    • 显示与系统属性相关的设置
  • vm
    • 显示JVM的设置

-Xsssize

设置线程堆栈大小(以字节为单位)

附加字母k或K表示KB,m或M表示MB,g或G表示GB。默认值取决于虚拟内存

下面的示例以不同的单位将线程堆栈大小设置为1024 KB

-Xss1m
-Xss1024k
-Xss1048576

此选项等效于

-XX:ThreadStackSize

-Xverify:mode

设置字节码验证器的模式

字节码验证可确保正确构建类文件并满足Java虚拟机规范中第4.10节“验证类文件”中列出的约束

https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.10

不要关闭验证,因为这会降低Java提供的保护,并可能由于类文件格式不正确而导致问题

此选项的可能模式参数包括

  • remote
    • 验证引导类装入器未装入的所有字节码。如果不指定 -Xverify 选项,这是默认行为
  • all
    • 启用所有字节码的验证
  • none
    • 禁用所有字节码的验证。不支持使用 -Xverify:none

相关推荐

辞旧迎新,新手使用Containerd时的几点须知

相信大家在2020年岁末都被Kubernetes即将抛弃Docker的消息刷屏了。事实上作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使...

分布式日志系统ELK+skywalking分布式链路完整搭建流程

开头在分布式系统中,日志跟踪是一件很令程序员头疼的问题,在遇到生产问题时,如果是多节点需要打开多节点服务器去跟踪问题,如果下游也是多节点且调用多个服务,那就更麻烦,再者,如果没有分布式链路,在生产日志...

Linux用户和用户组管理

1、用户账户概述-AAA介绍AAA指的是Authentication、Authorization、Accounting,即认证、授权和审计。?认证:验证用户是否可以获得权限,是3A的第一步,即验证身份...

linux查看最后N条日志

其实很简单,只需要用到tail这个命令tail-100catalina.out输入以上命令,就能列出catalina.out的最后100行。...

解决linux系统日志时间错误的问题

今天发现一台虚拟机下的系统日志:/var/log/messages,文件时间戳不对,跟正常时间差了12个小时。按网上说的执行了servicersyslogrestart重启syslog服务,还是不...

全程软件测试(六十二):软件测试工作如何运用Linux—读书笔记

从事过软件测试的小伙们就会明白会使用Linux是多么重要的一件事,工作时需要用到,面试时会被问到,简历中需要写到。对于软件测试人员来说,不需要你多么熟练使用Linux所有命令,也不需要你对Linux...

Linux运维之为Nginx添加错误日志(error_log)配置

Nginx错误日志信息介绍配置记录Nginx的错误信息是调试Nginx服务的重要手段,属于核心功能模块(nginx_core_module)的参数,该参数名字为error_log,可以放在不同的虚机主...

Linux使用swatchdog实时监控日志文件的变化

1.前言本教程主要讲解在Linux系统中如何使用swatchdog实时监控日志文件的变化。swatchdog(SimpleWATCHDOG)是一个简单的Perl脚本,用于监视类Unix系统(比如...

syslog服务详解

背景:需求来自于一个客户想将服务器的日志转发到自己的日志服务器上,所以希望我们能提供这个转发的功能,同时还要满足syslog协议。1什么是syslog服务1.1syslog标准协议如下图这里的fa...

linux日志文件的管理、备份及日志服务器的搭建

日志文件存放目录:/var/log[root@xinglog]#cd/var/log[root@xinglog]#lsmessages:系统日志secure:登录日志———————————...

运维之日志管理简介

日志简介在运维过程中,日志是必不可少的东西,通过日志可以快速发现问题所在。日志分类日志分类,对不同的日志进行不同维度的分析。操作系统日志操作系统是基础,应用都是在其之上;操作系统日志的分析,可以反馈出...

Apache Log4j 爆核弹级漏洞,Spring Boot 默认日志框架就能完美躲过

这两天沸沸扬扬的Log4j2漏洞门事件炒得热火朝天:突发!ApacheLog4j2报核弹级漏洞。。赶紧修复!!|Java技术栈|Java|SpringBoot|Spring...

Linux服务器存在大量log日志,如何快速定位错误?

来源:blog.csdn.net/nan1996jiang/articlep/details/109550303针对大量log日志快速定位错误地方tail/head简单命令使用:附加针对大量log日志...

Linux中查看日志文件的正确姿势,求你别tail走天下了!

作为一个后端开发工程师,在Linux中查看查看文件内容是基本操作了。尤其是通常要分析日志文件排查问题,那么我们应该如何正确打开日志文件呢?对于我这种小菜鸡来说,第一反应就是cat,tail,vi(或...

分享几款常用的付费日志系统,献给迷茫的你!

概述在前一篇文章中,我们分享了几款免费的日志服务器。他们各有各的特点,但是大家有不同的需求,有时免费的服务器不能满足大家的需要,下面推荐几款付费的日志服务器。1.Nagios日志服务器Nagio...

取消回复欢迎 发表评论: