JavaEE:JVM优化

本文深入探讨了JavaEE应用的JVM优化,包括各种选项参数、内存选项、日志输出、问题定位与优化策略。内容涵盖CPU占用率过高、堆内存溢出、栈内存溢出、方法区溢出、直接内存和代码缓存区的优化方法,以及如何分析GC日志和对象分配流程。
摘要由CSDN通过智能技术生成

一、选项参数:

1.标准选项参数:

(1)查看支持的标准选项参数:

java -help

(2)标准选项参数列表:

-cp <目录和 zip/jar 文件的类搜索路径>
-classpath <目录和 zip/jar 文件的类搜索路径>
--class-path <目录和 zip/jar 文件的类搜索路径>
              使用 ; 分隔的, 用于搜索类文件的目录, JAR 档案
              和 ZIP 档案列表。
-p <模块路径>
--module-path <模块路径>...
              用 ; 分隔的目录列表, 每个目录
              都是一个包含模块的目录。
--upgrade-module-path <模块路径>...
              用 ; 分隔的目录列表, 每个目录
              都是一个包含模块的目录, 这些模块
              用于替换运行时映像中的可升级模块
--add-modules <模块名称>[,<模块名称>...]
              除了初始模块之外要解析的根模块。
              <模块名称> 还可以为 ALL-DEFAULT, ALL-SYSTEM,
              ALL-MODULE-PATH.
--list-modules
              列出可观察模块并退出
-d <module name>
--describe-module <模块名称>
              描述模块并退出
--dry-run     创建 VM 并加载主类, 但不执行 main 方法。
              此 --dry-run 选项对于验证诸如
              模块系统配置这样的命令行选项可能非常有用。
--validate-modules
              验证所有模块并退出
              --validate-modules 选项对于查找
              模块路径中模块的冲突及其他错误可能非常有用。
-D<名称>=<值>
              设置系统属性
-verbose:[class|module|gc|jni]
              启用详细输出
-version      将产品版本输出到错误流并退出
--version     将产品版本输出到输出流并退出
-showversion  将产品版本输出到错误流并继续
--show-version
              将产品版本输出到输出流并继续
--show-module-resolution
              在启动过程中显示模块解析输出
-? -h -help
              将此帮助消息输出到错误流
--help        将此帮助消息输出到输出流
-X            将额外选项的帮助输出到错误流
--help-extra  将额外选项的帮助输出到输出流
-ea[:<程序包名称>...|:<类名>]
-enableassertions[:<程序包名称>...|:<类名>]
              按指定的粒度启用断言
-da[:<程序包名称>...|:<类名>]
-disableassertions[:<程序包名称>...|:<类名>]
              按指定的粒度禁用断言
-esa | -enablesystemassertions
              启用系统断言
-dsa | -disablesystemassertions
              禁用系统断言
-agentlib:<库名>[=<选项>]
              加载本机代理库 <库名>, 例如 -agentlib:jdwp
              另请参阅 -agentlib:jdwp=help
-agentpath:<路径名>[=<选项>]
              按完整路径名加载本机代理库
-javaagent:<jar 路径>[=<选项>]
              加载 Java 编程语言代理, 请参阅 java.lang.instrument
-splash:<图像路径>
              使用指定的图像显示启动屏幕
              自动支持和使用 HiDPI 缩放图像
              (如果可用)。应始终将未缩放的图像文件名 (例如, image.ext)
              作为参数传递给 -splash 选项。
              将自动选取提供的最合适的缩放
              图像。
              有关详细信息, 请参阅 SplashScreen API 文档
@argument 文件 一个或多个包含选项的参数文件
-disable-@files 阻止进一步扩展参数文件
--enable-preview 允许类依赖于此发行版的预览功能 要为长选项指定参数, 可以使用 --<名称>=<值> 或 --<名称> <值>。

2.非标准选项参数:

(1)查看支持的非标准选项参数:

java -X

(2)非标准选项参数列表:

-Xbatch           禁用后台编译
-Xbootclasspath/a:<以 ; 分隔的目录和 zip/jar 文件>附加在引导类路径末尾
-Xcheck:jni       对 JNI 函数执行其他检查
-Xcomp            在首次调用时强制编译方法
-Xdebug           为实现向后兼容而提供
-Xdiag            显示附加诊断消息
-Xfuture          启用最严格的检查,预期将来的默认值
-Xint             仅解释模式执行
-Xinternalversion 显示比 -version 选项更详细的 JVM版本信息
-Xloggc:<文件>    将 GC 状态记录在文件中(带时间戳)
-Xmixed           混合模式执行(默认值)
-Xnoclassgc       禁用类垃圾收集
-Xrs              减少 Java/VM 对操作系统信号的使用(请参见文档)
-Xshare:auto      在可能的情况下使用共享类数据(默认值)
-Xshare:off       不尝试使用共享类数据
-Xshare:on        要求使用共享类数据,否则将失败。
-XshowSettings    显示所有设置并继续
-XshowSettings:all显示所有设置并继续
-XshowSettings:locale显示所有与区域设置相关的设置并继续
-XshowSettings:properties显示所有属性设置并继续
-XshowSettings:vm显示所有与 vm 相关的设置并继续
-XshowSettings:system(仅 Linux)显示主机系统或容器配置并继续

-Xverify          设置字节码验证器的模式
--add-reads <模块>=<目标模块>(,<目标模块>)*
                  更新 <模块> 以读取 <目标模块>,而无论
                  模块声明如何。
                  <目标模块> 可以是 ALL-UNNAMED 以读取所有未命名
                  模块。
--add-exports <模块>/<程序包>=<目标模块>(,<目标模块>)*
                  更新 <模块> 以将 <程序包> 导出到 <目标模块>,
                  而无论模块声明如何。
                  <目标模块> 可以是 ALL-UNNAMED 以导出到所有
                  未命名模块。
--add-opens <模块>/<程序包>=<目标模块>(,<目标模块>)*
                  更新 <模块> 以在 <目标模块> 中打开
                  <程序包>,而无论模块声明如何。
--illegal-access=<值>
                  允许或拒绝通过未命名模块中的代码对命名模块中的
                  类型成员进行访问。
                  <值> 为 "deny"、"permit"、"warn" 或 "debug" 之一
                  此选项将在未来发行版中删除。
--limit-modules <模块名>[,<模块名>...]
                  限制可观察模块的领域
--patch-module <模块>=<文件>(;<文件>)*
                  使用 JAR 文件或目录中的类和资源
                  覆盖或增强模块。
--disable-@files  禁止进一步扩展参数文件
--source <版本>
                  设置源文件模式中源的版本。

3.常用高级选项参数:

(1)查看支持的高级选项参数:

方式1:

java -XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsInitial

方式2:

jhsdb clhsdb --pid 进程ID
flags

(2)常用高级选项参数列表(boolean类型使用-XX:+为true,-XX:-为false)(其他类型-XX:选项参数=值):

选项参数                                默认值              描述
-XX:ActiveProcessorCount                = -1                执行GC的CPU核心数量
-XX:+BackgroundCompilation              = true              开启后台编译
-XX:CompileCommand                      =              
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值