暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

JVM调优总结——JVM常见参数

小源学源码 2020-12-25
580

JVM参数

  • JPS

  • 类似 UNIX 的 ps
    命令。用户查看所有 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息

    jps -l
    :输出主类的全名,如果进程执行的是 Jar 包,输出 Jar 路径

  • jstat

    用于收集 HotSpot 虚拟机各方面的运行数据,在没有 GUI,只提供了纯文本控制台环境的服务器上,它将是运行期间定位虚拟机性能问题的首选工具。

    image-20201225162342701
    • jstat -gcnew vmid
      :显示新生代信息;

      image-20201225161025349

      (SOC 第一个幸存区分配容量  SIC第二个幸存区容量    SOU已使用     SIU第二个已使用    TT对象在新生代存活的次数  MIT对象在新生代存活的最大次数   EC表示Eden区分配容量   EU已使用Eden区容量    YGC:年轻代垃圾回收次数  YGCT:年轻代垃圾回收时间)

    • jstat -gc 46003 2s 3 :查看gc的情况

(SOC 第一个幸存区分配容量  SIC第二个幸存区容量    SOU已使用     SIU第二个已使用    EC表示Eden区分配容量   EU已使用Eden区容量

OC老年代已分配 OU已使用 MC元数据区已分配 MU已使用  CCSC压缩类空间大小  压缩类空间使用大小      YGC:年轻代垃圾回收次数  YGCT:年轻代垃圾回收时间  FGC:年老代垃圾回收次数      FGCT:年老代垃圾回收时间    GCT:总垃圾回收时间)

  • jstack
    :生成虚拟机当前时刻的线程快照

    jstack
    (Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合.

    生成线程快照的目的主要是定位线程长时间出现停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等都是导致线程长时间停顿的原因。线程出现停顿的时候通过jstack
    来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做些什么事情,或者在等待些什么资源。

-  jmap:生成堆转储快照

jmap
(Memory Map for Java)命令用于生成堆转储快照。如果不使用 jmap
命令,要想获取 Java 堆转储,可以使用 “-XX:+HeapDumpOnOutOfMemoryError”
参数,可以让虚拟机在 OOM 异常出现之后自动生成 dump 文件,Linux 命令下可以通过 kill -3
发送进程退出信号也能拿到 dump 文件。

jmap
的作用并不仅仅是为了获取 dump 文件,它还可以查询 finalizer 执行队列、Java 堆和永久代的详细信息,如空间使用率、当前使用的是哪种收集器等。和jinfo
一样,jmap
有不少功能在 Windows 平台下也是受限制的


文章转载自小源学源码,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论