• Java 问题定位工具 -- jps


    概览

    最近老大布置的任务就是质量加固,偶然看到了一些对于 Java 性能分析的介绍,因此,有了此篇学习笔记。

    JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外, 还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,每一种工具都有其自身的特点, 用户可以根据你需要检测的应用或者程序片段的状况,适当的选择相应的工具进行检测, 先通过一个表格形式简要介绍下这几个命令的作用和使用方法。本文重点介绍 jps 的使用方法

    命令 作用
    jps 基础工具
    jstack 查看某个Java进程内的线程堆栈信息
    jmap jmap导出堆内存,然后使用jhat来进行分析
    jhat 主要用来解析java堆dump并启动一个web服务器,然后就可以在浏览器中查看堆的dump文件
    jstat 主要是对java应用程序的资源和性能进行实时的命令行监控,包括了对heap size和垃圾回收状况的监控
    hprof hprof能够展现CPU使用率,统计堆内存使用情况

    简介

    jps 全称 JVM Process Status Tool,命令位于 jdk 的 bin 目录下,其作用是显示当前系统的 Java 进程情况,及其 pid 号。他是 Java自带的一个命令。

    jps 命令用来查看所有 Java 进程,每一行就是一个 Java 进程信息。

    jps 仅查找当前用户的 Java 进程,而不是当前系统中的所有进程,要显示其他用户的还只能用 ps 命令。

    jps 常用参数

    • jps -l 如果是以 class 方式运行,会显示进程的主类 main.class 的全名,如果是以 jar 包方式运行的,就会输出 jar 包的完整路径名:

    第一列的数字就是进程的 pid

    • jps -v 输出传递给 JVM 的参数,v 表示虚拟机,jps -vl 比较常见的组合;
    • jps -V 大写 v,表示通过文件传递给 JVM 的参数
    # michael @ Michael-MBP in ~ [16:37:59]
    $ jps -v |grep Mybatis
    8005 MybatisDemoApplication -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:53364,suspend=y,server=n -XX:TieredStopAtLevel=1 -Xverify:none -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=53363 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=127.0.0.1 -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -javaagent:/Users/michael/Library/Caches/IntelliJIdea2018.2/captureAgent/debugger-agent.jar=file:/private/var/folders/m1/ydypchs901lffc5sms07mrp40000gn/T/capture.props -Dfile.encoding=UTF-8
    
    • jps -m 输出传递给 main.class 方法的参数,实用的一个命令,jps -ml 比较实用的组合,会显示包名/类名/参数
    • jps -q 只输出进程的 pid

    总结

    jps 是比较常用的 Java 命令。使用 jps 可以查看当前有哪些 Java 进程处于运行状态。如果运行了一个 web 应用(使用tomcat、jboss、jetty等启动)的时候,就可以使用 jps 查看启动情况。

    有的时候我想知道这个应用的日志会输出到哪里,或者启动的时候使用了哪些javaagent,那么我可以使用 jps -v 查看进程的jvm参数情况。

    参考

  • 相关阅读:
    .NET5都来了,你还不知道怎么部署到linux?最全部署方案,总有一款适合你
    一款基于.NET Core的认证授权解决方案-葫芦藤1.0开源啦
    开源项目葫芦藤:IdentityServer4的实现及其运用
    MySQL大表优化方案
    Sec-Fetch-*请求头,了解下?
    前端开发快速入门
    从零开始打造专属钉钉机器人
    打造钉钉事件分发平台之钉钉审批等事件处理
    React中的高阶组件
    浏览器本地存储方案
  • 原文地址:https://www.cnblogs.com/michael-xiang/p/10779566.html
Copyright © 2020-2023  润新知