JVM | 性能调优

JVM | 性能调优

一、性能调优工具

1. jps

  • jps : 用来查看java进程pid的命令
  • 用法:jps [-q] [-mlvV] [<hostid>]
    • -q : 只显示pid
    • -m : 输出main method的参数
    • -l : 显示类的全限定名
    • -v : 显示虚拟机启动参数
    • -V : 显示通过配置文件设定的jvm参数(.hotspotrc文件或-XX:Flags=所指定的文件)
    • hostid : 主机地址 eg: jps localhost
  • 示例: jps -mlv localhost 列出localhost上运行的jvm,展示程序输入参数,类的全限定名,虚拟机启动参数

2. jstack(查看线程)

  • jstack :用于显示指定进程内线程的信息
  • 用法: jstack [option] pid
    • option:
      • -F : 强制线程dump,在线程挂起的时候用
      • -m : 同时输出java和native
      • -l : long listing
  • jstack日志分析

3. jmap(查看内存)

4. jstat(性能分析)

  1. jstat : 查看堆内存各部分的使用量,以及加载类的数量
  2. 用法:jstat <option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

5. jconsole

6. jvisualvm

7. Arthas

二、参数配置

1. 生产环境打印GC停顿时间

-XX:+printGCApplicationStoppedTime
如果停顿时间过长,需要考虑代码是不是有大的循环, 无法进入安全点导致GC停顿时间过长问题

Total time for which application threads were stopped: 0.0000306 seconds, Stopping threads took: 0.0000070 seconds

2. 生产环境禁止RMI(remote method invoke)调用System.gc();

  • -XX:+DisableExplictGC : 失效直接调用的gc

3. 生产环境真实配置案例

-Dresin.home=$SERVER_ROOT
-server
-Xmx3000M
-Xms3000M
-Xmn600M
-XX:PermSize=500M
-XX:MaxPermSize=500M
-Xss256K
-XX:+DisableExplicitGC
-XX:SurvivorRatio=1
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:CMSFullGCsBeforeCompaction=0
-XX:+CMSClassUnloadingEnabled
-XX:LargePageSizeInBytes=128M
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=70
-XX:SoftRefLRUPolicyMSPerMB=0
-XX:+PrintClassHistogram
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintHeapAtGC
-Xloggc:log/gc.log
原文地址:https://www.cnblogs.com/Serenity1994/p/12466927.html