JVM调优参数大全

JVM参数调优,一文让你搞懂,再也不为应用操心了! XX:+UseStringDeduplication -XX:+DisableExplicitGC #其他优化。-Xloggc:/logs/gc.log -XX:+PrintGCDetails #GC日志与监控。-XX:+UseG1GC -XX:MaxGCPauseMillis=200 #选择G1GC。-XX:MetaspaceSize 和 -XX:MaxMetaspaceSize。-XX:+PrintGCDetails # 打印GC详细信息。Eclipse MAT(内存分析) 阅读详情

1.JVM调优常见参数分类

标准参数(-):所有的JVM实现都必须实现这些参数的功能,而且向后兼容;
非标准参数(-X):默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容
非稳定参数(-XX):非Stable参数,即非静态参数,此类参数各个jvm实现会有所不同,将来可能会随时取消,这些参数通常用于高级性能调优、垃圾收集器配置、堆内存大小等高级设置,如设置永久代元空间大小:
JDK7配置为:
-XX:PermSize=512m
-XX:MaxPermSize=512m
在JDK8及以上版本则不同,配置为:
-XX:MetaspaceSize=512m
-XX:MaxMetaspaceSize=512m

2.常用的参数查看和分类

2.1标准参数详解

      输入命令java -help就能获得当前机器所有java的标准参数列表,如java -version, java -jar等,除此之外还有查询GC问题常用的输出参数:
-verbose:class 输出jvm载入类的相关信息,当jvm报告说找不到类或者类冲突时可此进行诊断。
-verbose:gc 输出每次GC的相关情况。|
-verbose:jni 输出native方法调用的相关情况,一般用于诊断jni调用错误信息

bdpcloud@host154[/home/bdpcloud]$ 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:
    -d32          use a 32-bit data model if available
    -d64          use a 64-bit data model if available
    -server       to select the "server" VM
                  The default VM is server,
                  because you are running on a server-class machine.


    -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>
                  Warning: this feature is deprecated and will be removed
                  in a future release.
                  require the specified version to run
    -showversion  print product version and continue
    -jre-restrict-search | -no-jre-restrict-search
                  Warning: this feature is deprecated and will be removed
                  in a future release.
                  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 with specified granularity
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  disable assertions with specified granularity
    -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
    -splash:<imagepath>
                  show splash screen with specified image

2.2非标准参数详解

输入java -X命令,能够获得当前JVM支持的所有非标准参数列表,一些常见的参数设置:
-Xms:设置初始Java堆大小
-Xmx:设置最大Java堆大小,通常最大java堆大小与初始堆大小设置为一样大,防止内存抖动,默认为服务器内存的四分之一
-Xss:设置Java线程堆栈大小

bdpcloud@host154[/home/bdpcloud]$ 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
    -Xdiag            show additional diagnostic messages
    -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.
    -XshowSettings    show all settings and continue
    -XshowSettings:all
                      show all settings and continue
    -XshowSettings:vm
                      show all vm related settings and continue
    -XshowSettings:system
                      (Linux Only) show host system or container
                      configuration and continue
    -XshowSettings:properties
                      show all property settings and continue
    -XshowSettings:locale
                      show all locale related settings and continue

The -X options are non-standard and subject to change without notice.

2.3非Stable参数详解

       输入java -XX:+PrintFlagsFinal -version命令即可查看各个版本JVM的参数,可自行输出查看,一般可以将他们归为以下几个大类:
        1.性能参数(Performance Options):用于JVM的性能调优和内存分配控制,如初始化内存大小的设置;
        2.行为参数(Behavioral Options):用于改变JVM的基础行为,如GC的方式和算法的选择;
        3.调试参数(Debugging Options):用于监控、打印、输出等jvm参数,用于显示jvm更加详细的信息;

        此外,此类参数设置方法有四种:
-XX:
+<option> 启用选项,一般用于行为参数,即行为参数开关开启
-XX:-<option> 不启用选项,一般用于行为参数,即行为参数开关关闭
-XX:<option>=<number> 给选项设置一个数字类型值,可跟单位,例如 32k, 1024m, 2g
-XX:<option>=<string> 给选项设置一个字符串值,例如-XX:HeapDumpPath=./dump.core

2.3.1行为参数

-XX:-DisableExplicitGC:禁止调用System.gc();但jvm的gc仍然有效
-XX:+UseSerialGC:启用串行GC,即采用Serial+Serial Old模式
-XX:+UseParallelGC:启用并行GC,即采用Parallel Scavenge+Serial Old收集器组合(-Server模式下的默认组合)
-XX:GCTimeRatio=99:设置用户执行时间占总时间的比例(默认值99,即1%的时间用于GC)
-XX:MaxGCPauseMillis=time:设置GC的最大停顿时间(这个参数只对Parallel Scavenge有效)
-XX:+UseParNewGC:使用ParNew+Serial Old收集器组合
-XX:ParallelGCThreads:设置执行内存回收的线程数,在+UseParNewGC的情况下使用
-XX:+UseParallelOldGC:使用Parallel Scavenge +Parallel Old组合收集器
-XX:+UseConcMarkSweepGC:使用ParNew+CMS+Serial Old组合并发收集,优先使用ParNew+CMS,当用户线程内存不足时,采用备用方案Serial Old收集。
-XX:+ScavengeBeforeFullGC:新生代GC优先于Full GC执行

2.3.2性能参数

-XX:NewSize=2.125m:新生代对象生成时占用内存的默认值
-XX:MaxNewSize=size:新生成对象能占用内存的最大值
-XX:MaxPermSize=64m:方法区所能占用的最大内存(非堆内存)
-XX:PermSize=64m:方法区分配的初始内存
-XX:MaxTenuringThreshold=15:对象在新生代存活区切换的次数(坚持过MinorGC的次数,每坚持过一次,该值就增加1),大于该值会进入老年代(年龄阈值)
-XX:MaxHeapFreeRatio=70:GC后java堆中空闲量占的最大比例,大于该值,则堆内存会减少
-XX:MinHeapFreeRatio=40:GC后java堆中空闲量占的最小比例,小于该值,则堆内存会增加
-XX:NewRatio=2:新生代内存容量与老生代内存容量的比例
-XX:ReservedCodeCacheSize=32m:保留代码占用的内存容量
-XX:ThreadStackSize=512:设置线程栈大小,若为0则使用系统默认值
-XX:LargePageSizeInBytes=4m:设置用于Java堆的大页面尺寸
-XX:PretenureSizeThreshold=size:大于该值的对象直接晋升入老年代(这种对象少用为好)
-XX:SurvivorRatio=8:Eden区域Survivor区的容量比值,如默认值为8,代表Eden:Survivor1:Survivor2=8:1:1

2.3.3调试参数

-XX:-CITime:打印消耗在JIT编译的时间
-XX:ErrorFile=./hs_err_pid<pid>.log:保存错误日志或者数据到文件中
-XX:-ExtendedDTraceProbes:开启solaris特有的dtrace探针
-XX:HeapDumpPath=./java_pid<pid>.hprof:指定导出堆信息时的路径或文件名
-XX:-HeapDumpOnOutOfMemoryError:当首次遭遇OOM时导出此时堆中相关信息
-XX:OnError="<cmd args>;<cmd args>":出现致命ERROR之后运行自定义命令
-XX:OnOutOfMemoryError="<cmd args>;<cmd args>":当首次遭遇OOM时执行自定义命令
-XX:-PrintClassHistogram:遇到Ctrl-Break后打印类实例的柱状信息,与jmap -histo功能相同
-XX:-PrintConcurrentLocks:遇到Ctrl-Break后打印并发锁的相关信息,与jstack -l功能相同
-XX:-PrintCommandLineFlags:打印在命令行中出现过的标记
-XX:-PrintCompilation:当一个方法被编译时打印相关信息
-XX:-PrintGC:每次GC时打印相关信息
-XX:-PrintGCDetails:每次GC时打印详细信息
-XX:-PrintGCTimeStamps:打印每次GC的时间戳
-XX:-TraceClassLoading:跟踪类的加载信息
-XX:-TraceClassLoadingPreorder:跟踪被引用到的所有类的加载信息
-XX:-TraceClassResolution:跟踪常量池
-XX:-TraceClassUnloading:跟踪类的卸载信息
-XX:-TraceLoaderConstraints:跟踪类加载器约束的相关信息

bdpcloud@host154[/home/bdpcloud]$ java -XX:+PrintFlagsFinal -version | more
[Global flags]
     intx ActiveProcessorCount                      = -1                                  {product}
    uintx AdaptiveSizeDecrementScaleFactor          = 4                                   {product}
    uintx AdaptiveSizeMajorGCDecayTimeScale         = 10                                  {product}
    uintx AdaptiveSizePausePolicy                   = 0                                   {product}
    uintx AdaptiveSizePolicyCollectionCostMargin    = 50                                  {product}
    uintx AdaptiveSizePolicyInitializingSteps       = 20                                  {product}
    uintx AdaptiveSizePolicyOutputInterval          = 0                                   {product}
    uintx AdaptiveSizePolicyWeight                  = 10                                  {product}
    uintx AdaptiveSizeThroughPutPolicy              = 0                                   {product}
    uintx AdaptiveTimeWeight                        = 25                                  {product}
     bool AdjustConcurrency                         = false                               {product}
     bool AggressiveHeap                            = false                               {product}
     bool AggressiveOpts                            = false                               {product}
     intx AliasLevel                                = 3                                   {C2 product}
     bool AlignVector                               = true                                {C2 product}
     intx AllocateInstancePrefetchLines             = 1                                   {product}
     intx AllocatePrefetchDistance                  = 256                                 {product}
     intx AllocatePrefetchInstr                     = 3                                   {product}
     intx AllocatePrefetchLines                     = 3                                   {product}
     intx AllocatePrefetchStepSize                  = 64                                  {product}
     intx AllocatePrefetchStyle                     = 1                                   {product}
     bool AllowJNIEnvProxy                          = false                               {product}
     bool AllowNonVirtualCalls                      = false                               {product}
     bool AllowParallelDefineClass                  = false                               {product}
     bool AllowUserSignalHandlers                   = false                               {product}
     bool AlwaysActAsServerClassMachine             = false                               {product}
     bool AlwaysCompileL
     .........................

利用Python爬虫获取淘宝商品评论:实战案例分析 在数字化时代,数据的价值日益凸显,尤其是对于电商平台而言,商品评论作为用户反馈的重要载体,蕴含着丰富的信息。本文将详细介绍如何利用Python爬虫技术获取淘宝商品评论,包括代码示例和关键步骤解析。 阅读详情

相关推荐

信号与系统——卷积、相关运算与FFT关系以及工程应用(三)

卷积运算、相关运算

qq_35028634的博客 6612

JVM调优参数

JVM调优参数配置方式内存参数合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 JVM调优参数 配置方式 java [options] MainClass [arguments] options - JVM启动参数。 配置多个参数的.

360°顺滑 1万+

GAMES101作业3-遇到的各种问题及解决方法

记录在做作业3时遇到的一些坑!以及最后的解决办法。

qq_41835314的博客 6819

JVM常用调优参数 ——JVM篇

JVM常用性能调优参数详解 ​ 在学习完整个JVM内容后,其实目标不仅是学习了解整个JVM的基础知识,而是为了进行JVM性能调优做准备,所以以下的内容就是来说说JVM性能调优的知识。 一、性能调优 ​ 性能调优包含多个层次,比如:架构调优、代码调优、JVM调优、数据库调优、操作系统调优等等。 ​ 架构调优和代码调优是JVM调优的基础,其中架构调优是对系统影响最大的。 性能调优基本上按照以下步骤进行: 明确优化目标 发现性能瓶颈 性能调优 通过监控及数据统计工具获得数据 确认是否达到目标 二、何时进

YING—country的博客 2万+

别再手动算LLC了!用Mathcad 15分钟搞定谐振参数与增益曲线(附已验证产品案例)

本文详细介绍了如何利用Mathcad在15分钟内高效完成LLC谐振变换器的参数计算与增益曲线绘制。通过对比传统工具,突出Mathcad在自然数学表达、实时单位换算和动态参数关联方面的独特优势,帮助电源工程师大幅提升设计效率。文章还提供了已验证的产品案例和实用模板,助力工程师快速掌握谐振参数优化技巧。

weixin_42548888的博客 548

C# 操作Excel的时候,出现"被呼叫方拒绝接受呼叫的异常"的解决方案(参考官方给出的解决方案)

首先官方有对这个错误给出解释和解决方案,连接如下: https://docs.microsoft.com/zh-cn/previous-versions/ms228772(v=vs.120)#%E5%8F%AF%E9%9D%A0%E7%BC%96%E7%A8%8B 简单来说,貌似是线程问题,我猜。。。 之前我尝试着在代码中添加 Thread.Sleep(1000); 来进行解决,这种办...

Ck_Max的博客 5768

常用的 JVM 调优的参数

JVM调优是一个复杂且关键的过程,涉及到内存管理、垃圾回收、编译优化和线程管理等多个方面。合理的JVM参数设置可以显著提高Java应用的性能和稳定性,但也需要根据具体应用的特点进行调整和优化。通过系统地了解和使用这些常用的JVM调优参数,开发者可以更好地控制应用程序的运行环境,从而提升整体系统的效率和可靠性。

Flying_Fish_roe的博客 2099

微信小程序中蓝牙打印机中文编码处理:使用iconv-lite库

本文介绍了微信小程序集成蓝牙打印机时中文乱码问题的解决方案。由于打印机通常仅支持GBK/GB2312编码,而小程序使用UTF-8,导致中文显示异常。通过引入轻量级iconv-lite库进行编码转换,可高效解决该问题。文章详细说明了从库安装、编码转换到蓝牙发送的实现步骤,并提供了完整代码示例。关键注意事项包括编码验证、分段发送和兼容性测试。该方法经实际验证,能有效保障中文打印的准确性,适用于零售、物流等场景。

canglingyue的专栏 1310

JVM调优参数大全及G1GC调优

一、JVM常见参数 1、标准参数 -verbose:class 打印每个class信息 -verbose:gc 打印每次gc信息 2、非标参数 -X -Xloggc:filename 设置GC log文件的位置 -Xloggc:log/gc.log -Xms大小 设置堆的初始化大小 -Xmx2048m =-XX:InitialHeapSize -Xmx大小 设置堆的最大大小 -Xms1024m =-XX:MaxHeapSize 一般Xms=Xmx,防止扩容和缩容 -Xmn大小 设置年轻代大小(初始化和最大

叭嘣的博客 3万+

MTK PE+2.0介绍

  PE+2.0介绍:   1.      PE+2.0的状态机: 2.      升压波形协议及编码规则: PE+2.0软件设计:   在充电器类型为标充且底层电量SOC在1%—95%之间时,开始PE+2.0升压充电器的检测:首先将VBUSreset至5V,之后发送8.5的current pattern再获取此时VBUS电压和8.5V比较,若其与8.5的差值绝对值在0.5之...

raydom07的博客 1万+

Python爬虫经典案例第67篇:社交媒体平台爬取:Twitter数据采集实战

Twitter(现更名为X)是全球最具影响力的社交媒体平台之一,拥有超过3.3亿月度活跃用户。作为一个实时信息传播平台,Twitter上的数据涵盖了新闻、政治、娱乐、科技等各个领域,具有极高的研究价值:本文将深入探讨Twitter数据采集的技术方案,包括官方API调用、网页爬取和浏览器自动化三种方式。Twitter采用现代化的微服务架构,主要特点包括:Twitter作为全球最大的社交媒体平台,拥有完善的反爬机制:在开始爬取前,需要明确合法的数据采集方式:重要提示:未经授权爬取Twitter数据可能违反服务条

2201_76125261的博客 659

jvm调优参数大全

基本命令 $ java 用法: java [-options] class [args...] (执行类) 或 java [-options] -jar jarfile [args...] (执行 jar 文件) 其中选项包括: -d32 使用 32 位数据模型 (如果可用) -d64 使用 64 位数据模型 (如果可用) -server 选择 "server" VM

weixin_39355187的博客 599

基于 ESP32 的智能环境监测与远程报警系统

本系统基于 ESP32 实现了环境数据的采集、远程传输、报警通知功能,硬件成本低、接线简单、代码可直接运行。用户可根据实际需求调整传感器类型(如替换为 PM2.5 传感器、土壤湿度传感器)和功能扩展,适合嵌入式 IoT 入门学习和实际场景应用。通过多轮迭代(如优化低功耗、增加 APP 控制),可进一步提升系统的实用性和稳定性。

weixin_42300449的博客 1025

JVM性能调优参数 大全

<br /><br /> <br />本文是基于最新的SUN官方文档Java SE 6 Hotspot VM Options 编写的译文。主要介绍JVM中的非稳态选项及其使用说明。<br />为了让读者明白每个选项的含义,作者在原文基础上补充了大量的资料。希望这份文档,对正在研究JVM参数的朋友有帮助!<br /> <br />另外,考虑到本文档是初稿,如有描述错误,敬请指正。<br /> <br />非稳态选项使用说明<br />-XX:+<option> 启用选项<br />-XX:-<option>

namesliu 刘林 的专栏 3213

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JVM参数设置大全及JVM调优实战

参数说明: -Xmx3550m:设置JVM最大堆内存为3550M。-Xms3550m:设置JVM初始堆内存为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。-Xss128k:设置每个线程的栈大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K。应当根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但...

aoxun2713的博客 260

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

JVM调优参数大全、参数设置案例、日志分析

1.参数介绍 1.1 GC常用参数 1.1.1 常用数值型参数 -Xms 最小堆,为jvm启动时分配的内存,大点程序会启动的快一点。比如-Xms200m -Xmx 最大堆,为jvm运行过程中分配的最大内存,比如-Xms500m -Xmn 年轻代(初始和最大),整个堆大小=年轻代大小 + 年老代大小 + 持久代大小(方法区?)。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,建议年轻代占堆大小的1/4 ~ 1/2[5]。Sun官方推荐配置为整个堆的3/8,如果设置太

szw的博客 1224

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

从OOM到稳定运行:2026年JVM调优参数实战配置大全

解决JVM频繁OOM难题,掌握2026年主流调优策略。涵盖jvm调优常用参数设置2026适用场景,针对高并发、大内存应用优化GC性能,提升系统稳定性与响应速度。实战配置方案值得收藏。

VarLens的博客 446

JVM 调优参数大全 + 自定义配置全方案

参数必须写在-jar。

2502_92141759的博客 331

JVM调优--Java命令选项(参数)--大全/详解

原文网址: 简介 说明 Java是通过java虚拟机来装载和执行编译文件(class文件)的,java虚拟机通过命令java -option 来启动,-option为虚拟机参数,通过这些参数可对虚拟机的运行状态进行调整。 官网 官网文档:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html 格式: java [-options] class [args...] (执...

IT利刃出鞘的博客 5030

JVM调优总结(十一) - JVM参数大全

Java 6 JVM参数选项大全(中文版) 作者:Ken Wu Email: ken.wug@gmail.com 转载本文档请注明原文链接 http://kenwublog.com/docs/java6-jvm-options-chinese-edition.htm!   本文是基于最新的SUN官方文档Java SE 6 Hotspot VM Options 编写的译文。主要介绍JVM中

芒果先生Mango的专栏 1673

JVM调优实战:GC日志分析及参数设置避坑大全

GC日志是调优的第一手资料。通过-XX:+PrintGCDetails参数开启详细日志后,需重点关注Young GC/Full GC频率、耗时及内存回收效果。例如,若Young GC耗时超过50ms或Full GC频繁触发,可能预示新生代过小或老年代对象过早晋升。GC日志作为JVM运行状态的"黑匣子",记录了内存回收的关键细节,而参数设置不当则可能引发频繁Full GC、长暂停等问题。本文将结合实战经验,从GC日志解析、堆内存配置、垃圾回收器选择等角度,带你避开常见陷阱,提升系统吞吐量与稳定性。

csavap_648的博客 215
上一篇: Flink安装与使用
下一篇: JVM监控和调优常用命令jps|jstat|jinfo|jmap|jhat|jstack实战
SimpleSimpleSimples
博客等级 码龄10年 6451粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值