JVM的常用命令汇总

目录
  • 简介
  • jps
  • jinfo
  • jstat
  • jstack
  • jmap

简介

监测java应用,最方便的就是直接使用jdk提供的现成工具,在jdk的安装的bin目录下,已经提供了多种命令行监测工具,以便于开发人员和运维人员监测java应用和诊断问题,因此,此类工具是java应用监测的重要手段。也是作为java开发人员需要掌握的基本技能。

jps

查看java进程。

The jps command lists the instrumented Java HotSpot VMs on the target system. The command is limited to reporting information on JVMs for which it has the access permissions.

jinfo

(1)实时查看和调整JVM配置参数

The jinfo command prints Java configuration information for a specified Java process or core file or a remote debug server. The configuration information includes Java system properties and Java Virtual Machine (JVM) command-line flags.

(2)查看用法

jinfo -flag name PID 查看某个java进程的name属性的值
jinfo -flag MaxHeapSize PID

jinfo -flag UseG1GC PID

(3)修改 参数只有被标记为manageable的flags可以被实时修改。

jinfo -flag [+|-] PID

jinfo -flag <name>=<value> PID

(4)查看曾经赋过值的一些参数

jinfo -flags PID

jstat

(1)查看虚拟机性能统计信息

The jstat command displays performance statistics for an instrumented Java HotSpot VM. The target JVM is identified by its virtual machine identifier, or vmid option.

(2)查看类装载信息 jstat -class PID 1000 10 查看某个java进程的类装载信息,每1000毫秒输出一次,共输出10次。

(3)查看垃圾收集信息

jstat -gc PID 1000 10

jstack

(1)查看线程堆栈信息

The jstack command prints Java stack traces of Java threads for a specified Java process, core file, or remote debug server.

(2)用法

jstack PID

(4)排查死锁案例

DeadLockDemo

//运行主类

public class DeadLockDemo

{

    public static void main(String[] args)

    {

        DeadLock d1=new DeadLock(true);

        DeadLock d2=new DeadLock(false);

        Thread t1=new Thread(d1);

        Thread t2=new Thread(d2);

        t1.start();

        t2.start();

    }

}

//定义锁对象

class MyLock{

    public static Object obj1=new Object();

    public static Object obj2=new Object();

}

//死锁代码

class DeadLock implements Runnable{

    private boolean flag;

    DeadLock(boolean flag){

        this.flag=flag;

    }

    public void run() {

    if(flag) {

        while(true) {

            synchronized(MyLock.obj1) {

                System.out.println(Thread.currentThread().getName()+"----if获得obj1锁");

            synchronized(MyLock.obj2) {

                System.out.println(Thread.currentThread().getName()+"----if获得obj2锁");

            }

        }

    }

}

else {

    while(true){

        synchronized(MyLock.obj2) {

            System.out.println(Thread.currentThread().getName()+"----否则获得obj2锁");

        synchronized(MyLock.obj1) {

            System.out.println(Thread.currentThread().getName()+"----否则获得obj1锁");

        }

    }

}

}

}

}

运行结果

jstack分析

把打印信息拉到最后可以发现

jmap

(1)生成堆转储快照

The jmap command prints shared object memory maps or heap memory details of a specified process, core file, or remote debug server.

(2)打印出堆内存相关信息

jmap -heap PID

jinfo -flag UsePSAdaptiveSurvivorSizePolicy 35352
-XX:SurvivorRatio=8

(3)dump出堆内存相关信息

jmap -dump:format=b,file=heap.hprof PID

(4)要是在发生堆内存溢出的时候,能自动dump出该文件就好了

一般在开发中,JVM参数可以加上下面两句,这样内存溢出时,会自动dump出该文件。

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof。

设置堆内存大小: -Xms20M -Xmx20M

启动,然后访问localhost:9090/heap,使得堆内存溢出

(5)关于dump下来的文件

一般dump下来的文件可以结合工具来分析,这块后面再说。

到此这篇关于JVM的常用命令汇总的文章就介绍到这了,更多相关JVM常用命令内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java程序员必须知道的5个JVM命令行标志

    本文是Neward & Associates的总裁Ted Neward为developerworks独家撰稿"你不知道5个--"系列中的一篇,JVM是多数开发人员视为理所当然的Java功能和性能背后的重负荷机器.然而,我们很少有人能理解JVM是如何进行工作的-像任务分配和垃圾收集.转动线程.打开和关闭文件.中断和/或JIT编译Java字节码,等等. 不熟悉JVM将不仅会影响应用程序性能,而且当JVM出问题时,尝试修复也会很困难. 本文将介绍一些命令行标志,您可以使用它们来诊断和

  • 解决jmap命令打印JVM堆信息异常的问题

    jmap命令可以打印java进程的JVM堆信息,今天在某台机器上运行该命令查看 19560进程的堆信息 jmap -heap 19560 出现以下异常 Attaching to process ID 19560, please wait... Debugger attached successfully. Server compiler detected. JVM version is 24.79-b02 using thread-local object allocation. Paralle

  • 基于JVM性能监控命令介绍

    •jps:JVM Process StatusTool,显示指定系统内所有的HotSpot虚拟机进程 •jstat:JVM Statistics Monitoring Tool,用于手机HotSpot虚拟机各方面的运行数据 •jinfo: Configuration Info for Java 显示虚拟机配置信息 •jmap:Memory Map for Java,生成虚拟机的内存转储快照 •jhat: JVM Heap Dump Browser,用于分析headpdump文件,他会建立一个一个

  • JVM的常用命令汇总

    目录 简介 jps jinfo jstat jstack jmap 简介 监测java应用,最方便的就是直接使用jdk提供的现成工具,在jdk的安装的bin目录下,已经提供了多种命令行监测工具,以便于开发人员和运维人员监测java应用和诊断问题,因此,此类工具是java应用监测的重要手段.也是作为java开发人员需要掌握的基本技能. jps 查看java进程. The jps command lists the instrumented Java HotSpot VMs on the targe

  • Mysql常用命令汇总

    一.Mysql安装目录 数据库目录:/var/lib/mysql/ 配置文件:/usr/share/mysql(mysql.server命令及配置文件) 相关命令:/usr/bin(mysqladmin mysqldump等命令) 启动脚本:/etc/init.d/mysql(启动脚本文件mysql的目录) 二.系统管理 连接MySQL 格式: mysql -h 主机地址 -u用户名 -p用户密码 例 1:连接到本机上的MySQL. 复制代码 代码如下: hadoop@ubuntu:~$ mys

  • Java常用命令汇总

    这篇文章就主要向大家展示了Java编程中常用的命令,下面看下具体内容. 1.javac 将文件编译成.class文件 用法: javac <options> <source files> 其中, 可能的选项包括: -g 生成所有调试信息 -g:none 不生成任何调试信息 -g:{lines,vars,source} 只生成某些调试信息 -nowarn 不生成任何警告 -verbose 输出有关编译器正在执行的操作的消息 -deprecation 输出使用已过时的 API 的源位置

  • 服务器Ubuntu常用命令汇总

    下面的命令大都需要在 控制台 / 终端 / shell 下输入. 任何一个使用 'sudo' 作为前缀的命令都需要拥有管理员 (或 root) 访问权限. 所以你会被提示输入你自己的密码. 查看软件xxx安装内容 查看显卡使用情况 nvidia-smi 查看硬盘使用情况 df -hl # 查看磁盘剩余空间 df -h # 查看每个根路径的分区大小 查看用户配额及使用情况 quota -uvs username 打开visdom python -m visdom.server 后面可加参数,如在9

  • Python pip 常用命令汇总

    使用了这么就pip命令,但是一直是简单使用,很多命令都是用了查,查了用,今天把常用的命令汇总一下,方便使用. 命令: pip 由上图可以看到 pip 支持一下命令 Commands: install Install packages. download Download packages. uninstall Uninstall packages. freeze Output installed packages in requirements format. list List install

  • docker常用命令汇总

    docker安装 1.要求:linux内核在3.10及其以上 内核版本查看: uname -r 内核升级: yun update 2.docker安装 yum install docker 3.docker版本查看 docker -v 4.docker启动 systemctl start docker 5.docker停止 systemctl stop docker 6.设置开机启动docker systemctl enable docker docker卸载 查看软件安装 rpm -qa |g

  • MongoDB的常用命令汇总(Mongo4.2.8)

    目录 一.数据库相关 二.用户相关 三.集合Collection相关 一.数据库相关 1.切换/创建数据库 >use "dbname"; 2.查询所有数据库 > show dbs; mytest  0.000GB 3.查看当前使用的数据库 > db.getName(); Mytest 4.查看数据库版本 > db.version(); 4.2.8 5.查看当前db的链接地址 > db.getMongo(); connection to 127.0.0.1:

  • Ubuntu服务器常用命令汇总

    下面的命令大都需要在 控制台 / 终端 / shell 下输入. 任何一个使用 'sudo' 作为前缀的命令都需要拥有管理员 (或 root) 访问权限. 所以你会被提示输入你自己的密码. 查看软件xxx安装内容 查看显卡使用情况 nvidia-smi 查看硬盘使用情况 df -hl # 查看磁盘剩余空间 df -h # 查看每个根路径的分区大小 查看用户配额及使用情况 quota -uvs username 打开visdom python -m visdom.server 后面可加参数,如在9

  • Linux下yum常用命令汇总

    Yum软件包管理器基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,使用简单便捷. Yum常用命令: 1 安装 yum install 全部安装 yum install package1 安装指定的安装包package1 yum groupinsall group1 安装程序组group1 2 更新和升级 yum update 全部更新 yum update package1 更新指定程序包package1 yum check-u

  • mysql常用命令汇总介绍

    设置更改mysqlroot密码 首次进入mysql数据库, ! 可以将mysql绝对路径加入到环境变量中, 还可以设置开机加载, 重新加载环境变量让mysql生效 重新登录 mysql -uroot 即可 给mysql添加密码 重新登录验证, 修改密码 重新登录验证,验证成功 重置密码,修改配置文件,跳过授权 重启mysql服务,使用root用户验证不需要密码 进去修改密码文件 update user set password=password('aminglinux') where user=

随机推荐