一篇关于Java线上故障解决方案(五)

开课吧开课吧锤锤2021-04-08 10:07

点赞
有用
分享分享

    Java编程语言是一种简单、面向对象、分布式、解释型、健壮安全、与系统无关、可移植、高性能、多线程和动态的语言。如今Java已经广泛应用于各个领域的编程开发。

    四、JVM问题定位命令

    在JDK安装⽬录的bin⽬录下默认提供了很多有价值的命令⾏⼯具。每个⼩⼯具体积基本都⽐较⼩,因为这些⼯具只是jdk\lib\tools.jar的简单封装。

    其中,定位排查问题时最为常⽤命令包括:jps(进程)、jmap(内存)、jstack(线程)、jinfo(参数)等。

    jps:查询当前机器所有Java进程信息

    jmap:输出某个Java进程内存情况

    jstack:打印某个Java线程的线程栈信息

    jinfo:⽤于查看jvm

    1.jps

    jps⽤于输出当前⽤户启动的所有进程ID,当线上发现故障或者问题时,利⽤jps快速定位对应的Java进程ID。

 [root ~]# jps -m

    参数解释:

    m:输出传⼊main⽅法的参数

    l:输出完全的包名,应⽤主类名,jar的完全路径名

Java

    当然,我们也可以使⽤Linux提供的查询进程状态命令也能快速获取Tomcat服务的进程id。⽐如:

 [root ~]# ps -ef|grep tomcat

    2.jmap

    jmap(JavaMemoryMap)可以输出所有内存中对象的⼯具,甚⾄可以将VM中的heap,以⼆进制输出成⽂本,使⽤⽅式如下:jmap-heap:

 [root ~]# jmap -heap pid #输出当前进程JVM堆内存新⽣代、⽼年代、持久代、GC算法等信

    注意:pid通过jps命令得知

Java

    以上内容由开课吧老师ゞ浪人与酒丶提供,更多Java教程尽在开课吧广场Java教程频道。

有用
分享