画布 1
Chapter4.监控工具
  基础命令
    jps
      显示java进程
    jstat
      虚拟机统计信息工具（P142）
      示例：
        jstat -gc 27642 250 20
        jstat -gcutil 27642
    jinfo
      实施查看和调整虚拟机参数
    jmap
      内存映像工具，可dump、显示堆、对象统计、永久代等待执行finalize对象等信息（P143）
    jhat
      分析jmap命令dump出来的转储文件（不推荐）
      可用jprofiler、VisualVM、Eclipse Memory Analyzer等分析
    jstack
      java线程堆栈分析（P146）
    javah
      用于编写JNI接口，C语言头文件生成
    javap
      字节码分析工具
    PerfData
      JVM其实每秒都会将自己的大量统计数据，写入到 /tmp/hsperfdata_$username/$pid 文件
      查看PerfData
        jcmd $PID PerfCounter.print
    其他命令列表
      P148
  可视化故障处理工具
    JHSDB（HostSpot Debugger）
      hotspot C++层调试用
      可看到JAVA对象的C++的指针等其他调试信息
      JDK9之前
        java -cp ../lib/sa-jdi.jar sun.jvm.hotspot.HSDB
        HSDB-图形界面
        CLHSDB 命令行模式
      jDK9之后提供了bin/jhsdb命令启动
    jsconsole
      常规的内存、cpu、线程等监控
    VisualVM
      多合一，优点：安装插件
      可安装BTrace增强插件
      Visual GC插件：显示GC信息相对详细
    JMC
      商业特性，个人可免费使用
      JFR
        飞行记录仪：Java Flight Recorder
        特点：持续收集数据用于监控，数据很详细
        特点：可在线使用，性能消耗低于1%
        原理：启动后，把需要监控的信息记录在内存或文件中，监控完成后，会以可视化界面显示
        使用方式
          本机：命令启动jmc，界面里面启动jfr
          远程：可命令启动jmc，把信息输出到文件中，然后用jmc打开
  HotSpot虚拟机插件及工具（非JAVA层面）
    存放：hotspot源码：hotspot/src/share/tools
    HSDIS
      JIT生成代码反汇编（P176）
      即时编译器动态生成的代码缓存，无法调试，使用它进行反汇编
    JITWatch
      搭配HSDIS，可视化编译日志分析工具