• JVM-JDK命令行工具


     JDK命令行工具

      当我们进入JDK的安装目录里面的/bin目录,会发现有很多小工具,有我们熟悉的也经常用的java,javac,也有很多我们不怎么用到很陌生的工具.下面看看哪些平时不怎么用到的工具吧.

       

     

     jps> JVM Procrss Stauts Tool,显示指定系统内所有的HotSpot虚拟机进程.

      可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID(Local Virtual Machine Identifier,LVMID).
      对于本地虚拟机进程来说,LVMID与操作系统进程的ID(Process Identifier,PID) 是一致的.
      jps命令格式:
      jps [ options ] [ hostid ]

      例如:(由于我没有运行什么程序,所只有sun.tools.jps.Jps这一个了)

     

      一些常用参数:
      I> -q:只输出LVMID,省略主类的名称
      II> -m:输出虚拟机进程启动时传递给主类main()函数的参数
      III> -l:输出主类的全名,如果进程执行的是Jar包,输出Jar路径
      IV> -v:输出虚拟机进程启动时JVM参数

      jstat> JVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面的运行数据.它可以显示本地或者远程虚拟机进程中的类装载,内存,垃圾收集,JIT编译等运行数据,在没有GUI图形界面,只提供类纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具.
      jstat命令格式为:
      jstat [ option vmid [ interval [ s | ms ] [ count ] ] ]
      说明:I> 如果是本地虚拟机进程,VMID与LVMID是一致的.
           II> interval 和 count 代表查询间隔和次数,省略说明只查询一次.
          例如:jstat -gc 4158 300 10 表示每300毫秒查询一次进程4158垃圾收集状况,一共查询10次.

          III> optin代表这用户希望查询的虚拟机信息,主要分为3类:类装载,垃圾收集,运行编译状况.

     

      jinfo> Configuration Info for Java,显示虚拟机配置信息
      jinfo命令格式:
      jinfo [ optin ] pid
      参数:
      I> -flag可以查询未被显示指定的参数的系统默认值.
      例如:

     

      jmap> Memory Map for Java,生成虚拟机的内存转储快照(heapdump文件).还可以查询finalize执行队列,Java堆和永久代的详细信息,如空间利用率,当前用的是哪种收集器等.
      jmap命令格式:
      jmap [ optin ] vimd
      参数:
      I> -dump:生成Java堆转储快照.格式为:-dump:[live,]format=b,file=<filename>,其中live子参数说明是否只dump出存活的对象.
      II> -finalizerinfo:显示在F-Queue中等待Finalizer线程执行finalize()方法的对象.只在Linux/Solaris平台下有效.
      III> -heap:显示Java堆详细信息,如使用哪种回收器,参数值,分代状况等.只在Linux/Solaris平台下有效.
      IV> -histo:显示堆中对象统计信息,包括类,实例数量,合计容量.
      V> -permstat:以ClassLoader为统计口径显示永久代内存状况.只在Linux/Solaris平台下有效.
      VI> -F:当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照.只在Linux/Solaris平台下有效.

     jhat> JVM Heap Dump Browser,用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果.

      jstack> Stack Trace for Java,显示虚拟机的线程快照.
      线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成快照的主要目的是定位线程出现长时间停顿的原因.
      jstack [ option ] vmid
      参数:
      I> -F:当正常输出的请求不被响应时,强制输出线程堆栈
      II> -l:除了堆栈外,显示关于锁的附加信息
      III> -m:如果调用到本地方法的话,可以显示C/C++的堆栈
      例如(这里只是部分结果截图):

  • 相关阅读:
    C# 操作XML文件
    参数化查询为什么能够防止SQL注入
    引用asp.net母版页后,母版页和内容页的页面事件执行顺序
    简单的数据库时间查询
    WCFService Configuration Editor的使用
    显示、隐藏计算机Administrator账户
    在ASP程序中调用Web Service
    ASP.NET WAP开发
    Microsoft SQL Server 2005 错误 29503。SQL Server 服务无法启动
    ASPNET2.0中读写Cookie的方法!
  • 原文地址:https://www.cnblogs.com/lrh-xl/p/5320273.html
Copyright © 2020-2023  润新知