JVM性能监控

来源:互联网 发布:单片机烧录软件 编辑:程序博客网 时间:2024/05/16 02:33

JVM性能监控

1、jps

  • 显示当前所有java进程pid
  • jps只能显示当前用户的java进程 ,查看可以 ps aux | grep java

2、jstat

  • 对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控
  • jstat - [-t] [-h] [ []]
    • Options — 选项,我们一般使用 -gcutil 查看gc情况
    • vmid — VM的进程号,即当前运行的java进程号
    • interval– 间隔时间,单位为秒或者毫秒
    • count — 打印次数,如果缺省则打印无数次
    • jstat -gcutil 1000 5 (1000 ms 打印5次)

3、jstack

  • 当前线程的运行情况
  • jstack 
  • 线程状态
    • Runnable
      • 线程具备所有运行条件,在运行队列中准备操作系统的调度,或者正在运行
    • Wait on condition
      • 线程等待某个条件的发生,最常见的情况是线程在等待网络的读写
    • Waiting for monitor entry 和 in Object.wait()
      • Monitor是对象或者 Class的锁,每一个对象都有,也仅有一个 monitor
      • Monitor在某个时刻,只能被一个线程拥有,该线程就是 “Active Thread”,而其它线程都是 “Waiting Thread”,分别在两个队列 “ Entry Set”和 “Wait Set”里面等候
      • 在 “Entry Set”中等待的线程状态是 “Waiting for monitor entry”,而在 “Wait Set”中等待的线程状态是 “in Object.wait()”
      • 当一个线程申请进入临界区时,它就进入了 “Entry Set”队列
      • 调用 wait() 方法,放弃了 Monitor,进入 “Wait Set”队列,只有当别的线程在该对象上调用了 notify() 或者 notifyAll() , “ Wait Set”队列中线程才得到机会去竞争

4、jmap

  • 得到运行java程序的内存分配的详细情况
  • jmap [ option ] pid
    • -dump:[live,]format=b,file= 使用hprof二进制形式,输出jvm的heap内容到文件=. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.(jmap -dump:format=b,file=heap.bin pid)
    • -finalizerinfo 打印正等候回收的对象的信息
    • -heap 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况.
    • -histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.
    • -permstat 打印classload和jvm heap长久层的信息.
    • -F 强迫
    • -h | -help 打印辅助信息
0 0
原创粉丝点击