@@内存调优@@
#初始堆大小 最大堆大小
-Xms(-XX:InitialHeapSize)
#最大堆大小
-Xmx (-XX:MaxHeapSize)
#让JVM在发生内存溢出时自动的生成堆内存快照
-XX:+HeapDumpOnOutOfMemoryError
#内存溢出时 存放路径
#默认情况下,保存在JVM的启动目录下名为java_pid<pid>.hprof 的文件里
-XX:HeapDumpPath
#当内存溢出发生时执行操作
-XX:OnOutOfMemoryError ="sh ~/cleanup.sh"
#设置持久代大小
-XX:PermSize
#设置持久代最大值
-XX:MaxPermSize
@@新生代垃圾回收@@
#指定新生代大小
-XX:NewSize and -XX:MaxNewSize
#设置新生代和老年代的相对大小
-XX:NewRatio
#-XX:NewRatio=3 指定老年代/新生代为3/1. 老年代占堆大小的 3/4 ,新生代占 1/4 .
#-XX:SurvivorRatio 指定伊甸园区(Eden)与幸存区大小比例
XX:SurvivorRatio=10
表示伊甸园区(Eden)是幸存区To大小的10倍(也是幸存区From的10倍) 伊甸园区(Eden)占新生代大小的10/12
#指定JVM 在每次新生代GC时,输出幸存区中对象的年龄分布
-XX:+PrintTenuringDistribution
#指定JVM 在每次新生代GC时,输出幸存区中对象的年龄分布。
-XX:+PrintTenuringDistribution
#设定老年代阀值 幸存区空间目标使用率
XX:MaxTenuringThreshold=10
-XX:TargetSurvivorRatio=90
设定老年代阀值的上限为10,幸存区空间目标使用率为90%。
@@吞吐量收集器@@
#该标志来激活串行垃圾收集器
-XX:+UseSerialGC
#选择垃圾收集器为并行收集器 [关注吞吐量]
-XX:+UseParallelGC
#选择垃圾收集器为并行收集器 [老年代 优于-XX:+UseParallelGC]
-XX:+UseParallelOldGC
吞吐量为垃圾回收时间与非垃圾回收时间的比值
#-XX:GCTimeRatio=<N>来设定,公式为1/(1+N)
-XX:GCTimeRatio=<value>
最大暂停时间(具有优先级)
-XX:MaxGCPauseMillis
@@CMS收集器@@
HotSpot JVM的并发标记清理收集器(CMS收集器)的主要目标就是:低应用停顿时间。
CMS收集器为老年代垃圾回收提供了几乎完全并发的解决方案,年轻代仍然通过“stop-the-world”方法来进行收集
会面临两个主要的挑战,需调优:
1 堆碎片
-- Full GC 处理
2 对象分配率高
-- 老年代将没有足够的可用空间来容纳一个从年轻代提升过来的对象。
-- 称为“并发模式失败”,并且JVM会执行堆碎片整理:触发Full GC。
#激活CMS收集器
-XX:+UseConcMarkSweepGC
#该标志激活年轻代使用多线程并行执行垃圾回收
-XX:UseParNewGC
[对于CMS收集器,年轻代GC算法和老年代GC算法是不同的]
#以多线程执行并发CMS
-XX:+CMSConcurrentMTEnabled
#定义并发CMS过程的线程数(需在生产或压测环境下 根据情况调优)
-XX:ConcGCThreads=<value>
#value=4意味着CMS周期的所有阶段都以4个线程来执行。
#默认 ConcGCThreads = (ParallelGCThreads + 3)/4
#老年代堆空间的使用率
-XX:CMSInitiatingOccupancyFraction
eg value=75意味着第一次CMS垃圾收集会在老年代被占用75%时被触发。
#收集器的增量模式(慎用)
-XX:+CMSIncrementalMode
增量模式经常暂停CMS过程,以便对应用程序线程作出完全的让步。因此,收集器将花更长的时间完成整个收集周期。
通过测试后发现正常CMS周期对应用程序线程干扰太大时,才应该使用增量模式。
#永久代也被包括进CMS垃圾回收
XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
保证当有系统GC调用时,永久代也被包括进CMS垃圾回收的范围内。
@@GC日志@@
#开启了简单GC日志模式
-XX:+PrintGC
无法从日志中判断是否GC将一些对象从young generation移到了old generation
#开启了详细GC日志模式
-XX:PrintGCDetails
#将时间和日期也加到GC日志中
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
#缺省的GC日志时输出到终端的,使用-Xloggc:也可以输出到指定的文件
-Xloggc
相关推荐
最后,我们可以通过以下参数来配置 JVM: 堆设置: * -Xms: 初始堆大小 * -Xmx: 最大堆大小 * -XX:NewSize=n: 设置年轻代大小 * -XX:NewRatio=n: 设置年轻代和年老代的比值 * -XX:SurvivorRatio=n: 年轻代中 Eden ...
本文档总结了作者在实践中不断积累的JVM性能调优经验,涵盖了JVM基础知识、内存调优策略、常见性能问题及解决方案等多个方面。希望通过这份总结能够为广大读者提供有价值的参考和帮助,提升应用性能,优化用户体验。...
以下是一些常见的JVM调优参数: - `-Xms` 和 `-Xmx`:分别设置JVM初始堆大小和最大堆大小,确保系统在运行过程中不会频繁地扩展或收缩堆,避免性能波动。 - `-XX:NewRatio`:控制年轻代和老年代的比例,优化垃圾...
常见的调优参数包括: - `-Xms` 和 `-Xmx`:设置堆内存的初始大小和最大大小。 - `-XX:NewRatio` 和 `-XX:SurvivorRatio`:控制新生代和Survivor区的比例。 - `-XX:MaxHeapFreeRatio` 和 `-XX:MinHeapFreeRatio`:...
本文将详细介绍几种常见的JVM性能调优工具,并通过实际案例帮助读者更好地理解和应用这些工具。 #### 一、jps (Java Virtual Machine Process Status Tool) `jps`是JDK自带的一个简单实用的工具,用于列出当前正在...
常见的调优手段包括调整堆内存大小、设置垃圾回收器(GC)、调整线程堆栈大小、选择合适的垃圾回收策略和参数等。 4. JAVA并发:Java并发编程涉及到多个线程同时运行以提高程序性能,但同时也需要妥善处理线程间...
本文将详细解析JVM性能调优分析的过程,并提供常见参数选择配置的建议。 首先,进行JVM参数调优时,我们需要考虑以下几个步骤: 1. **对象占用内存计算**:了解业务系统每秒钟创建的对象数量及其占用的内存空间,...
GC调优是JVM性能优化的关键环节,涉及GC参数的调整,如新生代与老年代的比例、存活对象的阈值、并发比等。通过合理设置这些参数,可以实现更高效的内存回收,降低应用暂停时间,提高整体性能。同时,理解GC日志,...
JVM性能调优-JVM内存整理及GC回收 JVM(Java Virtual Machine)性能调优是 Java ...JVM 性能调优需要深入理解 JVM 的工作机制和垃圾回收算法,然后根据实际情况选择合适的垃圾回收器和配置参数,以提高 JVM 的性能。
【JVM常见参数总结】 JVM有许多可配置参数,如-Xms、-Xmx设定堆内存大小,-XX:NewRatio调整新生代与老年代比例,-XX:+UseG1GC选择垃圾收集器等。理解并熟练掌握这些参数的含义和使用场景,能有效提高JVM性能和稳定性...
9. **JVM参数调优**:掌握常用JVM启动参数,如-Xms、-Xmx、-XX:NewRatio、-XX:SurvivorRatio等,以及如何根据系统需求进行参数调整。 10. **实战演练**:通过实际案例,如Web服务器负载测试、大数据处理场景等,...
JVM调优实战 本文档旨在介绍JVM调优...本文档提供了JVM调优实战的详细介绍,包括JVM内存结构、垃圾回收机制、性能优化策略和JVM参数配置等方面的知识点。通过对这些知识点的掌握,读者可以更好地理解和优化JVM的性能。
在现代的软件开发与运行环境中,Java虚拟机(JVM)的性能调优是非常重要的一环,特别是在处理大型应用程序或者服务时,合适的JVM调优能够显著提升系统性能和稳定性。本篇文档详细介绍了JVM调优工具的命令使用及其...
常见的 JVM 参数包括堆内存大小、垃圾回收算法、线程数等。了解 JVM 参数的设置是进行调优的基础。 JVM 调优是 Java 开发者们不可或缺的技能,通过了解 JVM 的结构和工作机制,我们可以更好地进行调优,提高 Java ...
针对这些问题,我们可以调整JVM的启动参数,如-Xms和-Xmx设置初始堆和最大堆大小,-XX:NewRatio设定新生代与老年代的比例,-XX:SurvivorRatio设定新生代中Eden与Survivor区的比例。 在实际应用中,我们常常使用一些...
文档强调了正确选择和调整JVM参数的重要性,尤其是对于大型、多线程和高内存需求的应用。默认的垃圾收集器可能适用于大多数场景,但在特定条件下,如高并发、大规模数据处理,可能需要定制化的配置来提升性能。 7....
### 开发中常见的JVM问题调优 #### 运行时数据区域参数详解 ##### `-Xms` 和 `-Xmx`: 堆起始值与最大值 - **定义**: `-Xms` 设定了JVM堆空间的初始值,而 `-Xmx` 设定了堆空间的最大值。 - **作用**: 这两个参数...
综上所述,JVM性能调优涉及多个方面,包括理解参数传递机制、掌握不同类型的引用以及深入了解垃圾回收算法和分区处理方式等。通过合理配置和调整这些机制,可以显著提高Java应用程序的性能和稳定性。开发者应根据...
在IT行业中,JVM(Java Virtual Machine)调优和Linux系统操作是两个至关重要的技能,尤其是在处理大型企业级应用时。对于Java开发者来说,理解JVM的工作原理并能进行有效的调优,可以显著提升应用程序的性能和稳定...
本文将深入探讨JVM的组成、垃圾收集的基本概念及其常见算法,以及如何进行性能调优。 首先,JVM主要由以下几个部分组成: 1. **类装载器**:负责加载类文件,完成类的加载、验证、准备和初始化等工作。 2. **运行...