最详细的JVM调优参数详解
java应用启动命令例子java -Xms921m -Xmx921m -Xss512k -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Xmn460m -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -verbose:gc -XX:PrintCMSStatistics=2 -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintHeapAtGC -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -XX:-OmitStackTraceInFastThrow -Xloggc:/data/dubbo/logs/master/verify-provider/jvm.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/dubbo/logs/master/verify-provider -XX:ErrorFile=/data/dubbo/logs/master/verify-provider/hs_err_pid%p.log -Dserver.port=8080 -Dmanagement.server.port=8088 -Dmanagement.server.address=127.0.0.1 -Dmanagement.endpoints.web.exposure.include=* -Djava.security.egd=file:/dev/./urandom -Dhttp.maxConnections=200 -Dfile.encoding=UTF-8 -Ddubbo.protocol.port=9090 -Ddubbo.application.logger=slf4j -Ddubbo.application.qos.enable=true -Ddubbo.application.qos.port=9099 -Ddubbo.application.qos.accept.foreign.ip=false -Dlog4j2.formatMsgNoLookups=true -XX:MaxJavaStackTraceDepth=10240 -Ddubbo.zone=master -Dgit.branch=master -Drocketmq.affinity.enable=true -Drocketmq.affinity.zone=master -Dza.core-user.test.enable=true -Dpinpoint.statlog.center=tx-bj -Dpinpoint.statlog.namespace=master -Dpinpoint.statlog.project=verify-provider -Dapp=verify-provider -javaagent:/data/dubbo/verify-provider/libs/framework-starter-instrument-3.8.13.jar com.verify.Application --spring.profiles.active=test垃圾收集器
-XX:+UseSerialGC 设置串行收集器
-XX:+UseParallelGC 设置并行收集器
-XX:+UseConcMarkSweepGC 使用CMS收集器
-XX:ParallelGCThreads 设置Parallel GC的线程数
-XX:+UseG1GC 使用G1垃圾收集器JVM参数详解
-Xmn 新生代内存的大小,包括Eden区和两个Survivor区的总和,写法如:-Xmn1024,-Xmn1024k,-Xmn1024m,-Xmn1g 。
-Xms 堆内存的最小值,默认值是总内存/64(且小于1G)。默认情况下,当堆中可用内存小于40%(这个值可以用-XX: MinHeapFreeRatio 调整,如-X:MinHeapFreeRatio=30)时,堆内存会开始增加,直增加到-Xmx的大小。
-Xmx 堆内存的最大值,默认值是总内存/4(且小于1G)。默认情况下,当堆中可用内存大于70%(这个值可以用-XX: MaxHeapFreeRatio调整,如-X:MaxHeapFreeRatio =80)时,堆内存会开始减少,一直减小到-Xms的大小。 *如果Xms和Xmx都不设置,则两者大小会相同*
-Xss 每个线程的栈内存,默认1M,般来说是不需要改的。
-Xrs 减少JVM对操作系统信号的使用。
-Xprof 跟踪正运行的程序,并将跟踪数据在标准输出输出。适合于开发环境调试。
-Xnoclassgc 关闭针对class的gc功能。因为其阻至内存回收,所以可能会导致OutOfMemoryError错误,慎用。
-Xincgc 开启增量gc(默认为关闭)。这有助于减少长时间GC时应用程序出现的停顿,但由于可能和应用程序并发执行,所以会降低CPU对应用的处理能力。
-Xloggc file与-verbose:gc功能类似,只是将每次GC事件的相关情况记录到一个文件中,文件的位置最好在本地,以避免网络的潜在问题。
-Xms4g 初始化堆内存大小为4GB,ms是memory start的简称,等价于-XX:InitialHeapSize。
-Xmx4g 堆内存最大值为4GB,mx是memory max的简称,等价于-XX:MaxHeapSize。
-Xmn1200m 设置年轻代大小为1200MB。增大年轻代后,将会减小老年代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
-Xss512k 设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1MB,以前每个线程堆栈大小为256K。应根据应用线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
-XX:NewRatio=4 设置年轻代(包括Eden和两个Survivor区)与老年代的比值(除去持久代)。设置为4,则年轻代与老年代所占比值为1:4,年轻代占整个堆栈的1/5
-XX:SurvivorRatio=8 设置年轻代中Eden区与Survivor区的大小比值。设置为8,则两个Survivor区与个Eden区的比值为2:8,个Survivor区占整个年轻代的1/10
-XX:PermSize=100m 初始化永久代大小为100MB。
-XX:MaxPermSize=256m 设置持久代大小为256MB。
-XX:MaxTenuringThreshold=15 设置垃圾最大年龄。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入老年代。对于老年代比较多的应用,可以提高效率。如果将此值设置为个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象在年轻代的存活时间,增加在年轻代即被回收的概率。
-XX:MaxDirectMemorySize=1G 直接内存。报java.lang.OutOfMemoryError: Direct buffermemory异常可以上调这个值。
-XX:+DisableExplicitGC 禁止运行期显式地调用System.gc()来触发fulll GC。 注意: Java RMI的定时GC触发机制可通过配置-Dsun.rmi.dgc.server.gcInterval=86400来控制触发的时间。
-XX:CMSInitiatingOccupancyFraction=60 老年代内存回收阈值,默认值为68。
-XX:ConcGCThreads=4 CMS垃圾回收器并行线程线,推荐值为CPU核心数。
-XX:ParallelGCThreads=8 新生代并行收集器的线程数。
-XX:CMSMaxAbortablePrecleanTime=500 当abortable-preclean预清理阶段执行达到这个时间时就会结束。
-XX:+UnlockExperimentalVMOptions 用于解锁实验性参数,如果不加该标记,不会打印实验性参数
-XX:+UnlockDiagnosticVMOptions 用于解锁诊断性参数,如果不加该标记,不会打印诊断性参数
-XX:+ParallelRefProcEnabled 可以用来并行处理 Reference,以加快处理速度,缩短耗时
-XX:G1HeapRegionSize 用于设置小堆区大小,建议保持默认
-XX:MaxRAMPercentage 最大的堆内存百分比,简单来说,机器(容器)内存*MaxRAMPercentage/100=最大堆内存
-XX:InitialRAMPercentage 初始化堆内存百分比,简单来说,机器(容器)内存*InitialRAMPercentage/100=初始化堆内存大小
-XX:MaxDirectMemorySize=size 用于设置New I/O(java.nio) direct-buffer allocations的最大大小,size的单位可以使用k/K、m/M、g/G;如果没有设置该参数则默认值为0,意味着JVM自己自动给NIO direct-buffer allocations选择最大大小
-XX:+AlwaysPreTouch 在没有配置-XX:+AlwaysPreTouch参数即默认情况下,JVM参数-Xms申明的堆只是在虚拟内存中分配,而不是在物理内存中分配,G1修复了这类问题,所以忽略AlwaysPreTouch
-XX:InitialCodeCacheSize和-XX:ReservedCodeCacheSize 这个参数主要设置codecache的大小,比如我们jit编译的代码都是放在codecache里的,所以codecache如果满了的话,那带来的问题就是无法再jit编译了,而且还会去优化。因此大家可能碰到这样的问题:cpu一直高,然后发现是编译线程一直高(系统运行到一定时期),这个很大可能是codecache满了,一直去做优化。
-XX:-UseBiasedLocking 在JDK1.6以后默认已经开启了偏向锁这个优化,我们可以通过在启动JVM的时候加上-XX:-UseBiasedLocking参数来禁用偏向锁
-XX:+UseCountedLoopSafepoints 可以避免GC发生时,线程因长时间运行counted loop,进入不到safepoint,而引起GC的STW时间过长
-XX:+SafepointTimeout -XX:SafepointTimeoutDelay=1000 通过添加JVM参数-XX:+SafepointTimeout -XX:SafepointTimeoutDelay=1000后,可打印出哪些线程超过1000ms没有到达safepoint
-XX:StartFlightRecording 有了这个参数就会启用 JFR 记录
-XX:-OmitStackTraceInFastThrow 这是HotSpot VM专门针对异常做的一个优化,默认启用,当一些异常在代码里某个特定位置被抛出很多次的话,HotSpot Server Compiler(C2)会用fast throw来优化这个抛出异常的地方,直接抛出一个事先分配好的,类型匹配的对象,这个对象的message和stack trace都被清空.
+UseCGroupMemoryLimitForHeap 用于将 Java 堆的大小限制在 Linux 控制组(CGroup)所设置的内存限制范围内。该选项仅适用于在 Linux 操作系统上运行的 Java 应用程序。
-XX:+CMSParallelRemarkEnabled 用于启用并行标记垃圾收集器(CMS)的并行标记阶段。并行标记阶段是 CMS 垃圾收集器的一部分,用于标记需要回收的对象,以便进行后续的垃圾回收操作。
-XX:+UseCMSInitiatingOccupancyOnly 启动该选项后-XX:CMSInitiatingOccupancyFraction设置无效,Java 虚拟机将根据当前堆空间使用情况动态计算垃圾回收的阈值,以确保在减少垃圾回收次数的同时,避免由于过长的等待时间导致应用程序出现停顿。因此,该选项可以提高 CMS 垃圾收集器的性能和响应性能。
-XX:PrintCMSStatistics 打印垃圾回收器的详细统计信息
-XX:+PrintGCApplicationStoppedTime 打印应用停顿时间
-XX:+PrintGCDetails 该信息中包含了 GC 的发生原因、GC 前后堆内存的使用情况、GC 执行时间等信息,帮助开发人员了解 GC 的执行情况、优化应用程序的性能。该信息中包含了 GC 的发生原因、GC 前后堆内存的使用情况、GC 执行时间等信息,帮助开发人员了解 GC 的执行情况、优化应用程序的性能。
-XX: MinHeapFreeRatio=20 -XX: MaxHeapFreeRatio=40 该比例配置是关于扩缩容的,测试和预发可以使用该配置
-XX:+PrintClassHistogramBeforeFullGC 用于在执行 Full GC 之前输出堆中各个类的实例数量信息。需要注意的是,使用该选项会增加 Java 应用程序的运行时开销,因为需要在 Full GC 执行前遍历整个堆。因此,建议在测试或调试阶段使用该选项,而不是在生产环境中使用。
-XX:+PrintGCApplicationConcurrentTime 用于在每次垃圾回收时输出应用程序的运行时间。
-XX:+PrintTenuringDistribution 用于在每次 Minor GC 后输出对象年龄分布情况。
-XX:+PrintHeapAtGC 在 Java 应用程序执行垃圾回收时,Java 虚拟机会通过该选项输出堆的详细信息,包括堆的大小、空闲空间、已使用空间、对象数量等信息。
人称消肿草却是美肤之花,可当茶饮,春季采摘正当时春耕进行时春天来了,紫色的地丁花开了。孩提时代的清江鹤总是在这个季节,和一群熊孩子漫山遍野地去找寻这个紫色地丁花。或喂猪或喂兔。挎着竹篮拿着方锨,歪歪斜斜地紧跟在大孩子们的身后。图
谁也看不到,谁也听不到人生感悟在这个世界上,每个人都有自己的隐私,有些事情只有自己知道,只有自己能感受到。在这种情况下,如果没有任何人能够看到或听到,我们可能会有一些不同的感受。我们可能会感到孤独。没有
00后文学冬夜寂静凄冷,少不了要一杯茶来提神暖胃。水壶啪嗒一声,叫叫嚷嚷的水可算渐渐停止了呼吸。这才轻提水壶,那不安分的水便迫不及待地投身进了玻璃杯,惹得杯口炸起一团水雾。随意丢了些许茶叶进
张秀峰散文背影怕有二十多年了吧,每次于深夜长久地伏案写作之后,闭目静坐,让纷扬的思绪慢慢地安定,一如烟尘斗乱之后的归落,自然漫长,在那需要耐心等待的过程当中,渐渐地,我会进入一种似睡实醒若有所思
校园的记忆夏天,太阳照在学校北侧的大山果树丫杈上,那些刚刚有了青绿色的果子惹人流下了口水,但太阳公公总是和我们作对,迟迟不落西山,墙外紧贴校园的农家狗在汪汪吠叫,好像已经知道了我们入夜后欲偷
人到中年要不要认真打扮自己人到中年要不要认真打扮自己我觉得人到任何时候任何的年龄都是要好好打扮打扮自己,哪怕是上了年纪了,满脸的皱纹满脸的痘痘也是要自己重视自己,自己爱自己,我们根本就不需要看别人的脸色过活
人在旅途我走在我走在黎明前的黑暗里深蓝的苍穹下星星打着哈欠疲惫地睡去了闪烁的路灯还在和西天的月儿默默陪着匆匆的赶路人我走在三月的晨风里用淡淡的忧伤酝酿着各种花的芬芳金黄的迎春花粉白的杏花艳丽的桃
做个俗人,好好活着俗字,听起来总是不那么讨喜,毕竟,从小我们就被告知,人要活得出类拔萃,高雅脱俗。越长大,越觉得活得俗一点,其实也不错。人谷为俗。但凡吃五谷杂粮的,可不就是俗人一个嘛。不必事事都追求
为何真实的清朝妃子丑到爆,破灭了我一切幻想!回眸一笑百媚生,六宫粉黛无颜色。杨贵妃白居易长恨歌里面的一句诗,描写了杨贵妃的美貌让皇帝的后宫佳丽都失去了光彩。让唐玄宗为之倾倒。也让无数人对其美貌浮想联翩,在电视剧中常常看到皇帝
真实的纪晓岚是什么样?官至副国日御数女抽烟嗜肉,高寿离世历史开讲说起纪晓岚,大家一定会想到电视剧铁齿铜牙纪晓岚,他廉洁奉公幽默诙谐为人仗义执言,深受广大观众的喜欢。剧中他与和珅是死对头又是好朋友,两人斗智斗勇经常掐架然后让皇帝当评理裁判
真实的上甘岭要比电影残酷得多这么近那么美周末到河北奋进新时代美丽石家庄河北文旅看图识景奥运之城张家口等你来1956年公映的电影上甘岭,是第一部表现抗美援朝的经典影片。讲述的是1952年10月,坚守上甘岭阵地的