jvm的AggressiveOpts参数作用 jvm常用的参数

JVM调优

JVM调优工具

JVM调优工具主要有以下几种:

1. JConsole:是JDK中自带的一款监控和管理工具,可以监控虚拟机内存、线程、类加载等情况,并可以进行垃圾回收等操作。

2. VisualVM:也是JDK中自带的一款监控和管理工具,可以在图形化界面下实时监控应用程序的CPU、内存、GC情况等,还可以进行堆转储和线程快照等操作。

3. jstat:是JDK中自带的一个命令行工具,可以实时监控虚拟机内存、GC情况等,并可以输出CSV格式的日志文件。

4. GCViewer:是一款独立的开源工具,可以解析GC日志并生成图形化报表,方便分析GC情况以及优化虚拟机参数。

5. JProfiler:是一款商业化的Java性能分析工具,支持多种性能分析模式,包括CPU剖析、内存分析、线程分析、GC分析等,并且可以实时监控应用程序性能指标。

当然,这些工具各有特点,具体使用时需要根据实际情况选择。

JVM调优参数

根据JVM垃圾回收器分类,JVM调优的参数也有所不同,以下是常见的JVM调优参数:

1.串行垃圾回收器(Serial GC):

  • -XX:+UseSerialGC:启用串行垃圾回收器;
  • -Xmx:设置最大堆内存大小;
  • -Xms:设置初始堆内存大小。
  1. 并行垃圾回收器(Parallel GC):
  • -XX:+UseParallelGC:启用并行垃圾回收器;
  • -XX:ParallelGCThreads=n:设置并行垃圾回收器的线程数,默认值为CPU核心数;
  • -XX:+UseParallelOldGC:启用并行老年代垃圾回收器。
  1. CMS垃圾回收器:
  • -XX:+UseConcMarkSweepGC:启用CMS垃圾回收器;
  • -XX:CMSInitiatingOccupancyFraction=n:设置当堆空间使用率达到n%时,触发一次CMS垃圾回收;
  • -XX:+UseCMSInitiatingOccupancyOnly:只在达到CMSInitiatingOccupancyFraction指定的阈值时才执行CMS GC。
  1. G1垃圾回收器:
  • -XX:+UseG1GC:启用G1垃圾回收器;
  • -XX:G1HeapRegionSize=n:设置堆区域大小,默认值为1MB;
  • -XX:MaxGCPauseMillis=n:设置期望的最大GC停顿时间。

除了以上参数外,还有一些与内存分配、堆大小、线程栈大小等相关的参数,如:

  • -Xss:设置每个线程栈的大小;
  • -XX:NewSize=n:设置年轻代初始大小;
  • -XX:MaxNewSize=n:设置年轻代最大大小;
  • -XX:SurvivorRatio=n:设置Eden区域和Survivor区域的比例;
  • -XX:MaxTenuringThreshold=n:设置晋升老年代的对象年龄阈值。

需要注意的是,不同版本的JVM可能会有不同的调优参数,因此在具体使用时需要查看相应的文档。

JVM调优过程

JVM调优是一个比较复杂的过程,需要根据具体情况进行分析和调整。一般来说,JVM调优可以按照以下步骤进行:

1. 监控应用程序的性能指标:通过JVM自带的工具(如JConsole、VisualVM等)或第三方工具(如JProfiler等)监控应用程序的CPU、内存、线程、GC等性能指标,了解应用程序的性能瓶颈。

2. 分析GC情况:通过GC日志或者第三方工具(如GCViewer等)分析应用程序的GC情况,了解GC的时间、频率、堆大小等信息,找出可能存在的问题。

3. 优化GC参数:根据GC分析结果,适当调整相关的GC参数,如年轻代大小、Eden区域大小、Survivor区域比例、晋升老年代的对象年龄阈值等。

4. 调整内存分配:根据应用程序的内存使用情况,调整堆大小、元空间大小、线程栈大小等相关的内存分配参数。

5. 调整线程池参数:如果应用程序中使用了线程池,需要根据实际情况调整线程池的大小、队列长度等参数,以充分利用计算资源。

6. 测试验证:在进行调优后,需要对应用程序进行性能测试和验证,确保调优后的应用程序可以满足性能需求。

需要注意的是,JVM调优是一个持续的过程,随着应用程序的不断发展和变化,可能会出现新的性能瓶颈,需要及时调整。此外,JVM调优还需要结合具体的操作系统、硬件环境等因素进行分析和调整。

JVM常用参数总结

以下是常见的JVM参数:

1.基本参数

  • -Xms:指定JVM初始堆大小;
  • -Xmx:指定JVM最大堆大小;
  • -Xss:设置每个线程的栈大小;
  • -XX:MetaspaceSize=:设置元空间大小;
  • -XX:MaxMetaspaceSize=:设置元空间最大值;
  • -XX:MaxPermSize=:设置永久代最大值。
  1. GC相关参数
  • -XX:+UseSerialGC:使用串行垃圾回收器;
  • -XX:+UseParallelGC:使用并行垃圾回收器;
  • -XX:+UseConcMarkSweepGC:使用CMS垃圾回收器;
  • -XX:+UseG1GC:使用G1垃圾回收器;
  • -XX:NewRatio=:新生代与老年代的比例;
  • -XX:SurvivorRatio=:Eden区域和Survivor区域的比例;
  • -XX:MaxTenuringThreshold=:晋升老年代的对象年龄阈值;
  • -XX:ParallelGCThreads=:并行垃圾回收器的线程数;
  • -XX:CMSInitiatingOccupancyFraction=:触发CMS GC的堆空间使用率阈值;
  • -XX:+UseCMSInitiatingOccupancyOnly:只在达到CMSInitiatingOccupancyFraction指定的阈值时才执行CMS GC;
  • -XX:+UseParallelOldGC:使用并行老年代垃圾回收器。
  1. JIT编译器参数
  • -XX:+PrintCompilation:打印JIT编译的信息;
  • -XX:CompileThreshold=:JIT编译的阈值;
  • -XX:+PrintInlining:打印内联优化的信息。
  1. 调试参数
  • -Xdebug:开启远程调试模式;
  • -Xrunjdwp:指定远程调试传输协议和端口号;
  • -verbose:[class|gc|jni]:打印详细信息;
  • -XX:+HeapDumpOnOutOfMemoryError:OOM时自动生成堆转储文件。
  1. ClassLoader参数
  • -verbose:class:打印类加载的详细信息;
  • -Xbootclasspath/a::设置启动类路径;
  • -Djava.ext.dirs=:设置扩展类库路径。
  1. 优化参数
  • -XX:+AggressiveOpts:开启JVM依赖于特定处理器的高级特性;
  • -XX:CompileThreshold=:设定JIT编译器的阈值;
  • -XX:+OptimizeStringConcat:启用字符串连接的优化。
  1. 安全参数
  • -Djava.security.manager:指定一个安全管理器;
  • -Djava.security.policy=:指定安全策略文件。

除了以上常见的参数外,还有很多其他的JVM参数,可以根据具体需求进行调整。需要注意的是,不同版本的JVM可能会有不同的参数支持,因此在使用时需要查看相应的文档。

原文链接:,转发请注明来源!