JVM系列之常用命令(中)之jinfo查看jvm参数和jstack查看线程

本文介绍了Java诊断工具jinfo和jstack的使用,包括查看JVM参数、系统属性、动态修改参数以及排查死锁和高CPU占用问题。通过实例展示了如何利用这些工具进行问题定位,强调了线程命名在问题排查中的重要性。

前言

上一篇介绍了一些简单的java命令,这次难度稍微加深一点点,介绍几个高级一点的java命令jinfo和jstack。

jinfo

也许当你运行jinfo命令时,可能会遇到java.lang.InternalError:Metadata does not appear to be polymorphic的异常,如下图:
在这里插入图片描述

解决方式就是安装相应的jdk debug包。因为我的环境是Ubuntu和openjdk1.8的环境,所以执行以下命令,安装openjdk-8-dbg包

sudo apt-get install openjdk-8-dbg

–flags查看jvm参数

执行jinfo -flags命令可以查看java进程的相关参数,包括jvm默认缺省的参数也显示出来了,这个是jps -lv是查看不到的。

jinfo -flags pid

在这里插入图片描述

-sysprops查看系统参数

执行jinfo -sysprops 命令可以查看系统相关参数

jinfo -sysprops 312

在这里插入图片描述

动态修改jvm参数

先查看那些jvm参数可以修改

java -XX:PrintFlagsFinal -version | grep manageable

在这里插入图片描述
能调整的jvm参数并不多,比较实用就PrintGC,下面试试吧

jinfo -flag PrintGC=1 312

运行后可以看到参数确实被修改了
在这里插入图片描述

jstack

jstack命令是非常实用的一个命令,可以查看死锁和一些线程特别高的问题。

死锁

先写一个死锁的java程序

public class DeadThread {
   
   
    static final Object lockOne = new Object();
    static final Object lockTwo = new Object();

    public static void main(String[] args) {
   
   
        Thread thread1 = new Thread(</
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值