聊聊JVM优化的常用指令
创始人
2025-06-30 09:50:13
0

一、jps

jps 是(java process Status Tool), Java版的ps命令,查看java进程及其相关的信息,如果你想找到一个java进程的 pid,那可以用jps命令替代linux中的ps命令了,简单而方便。

jps [options] [hostid]

options参数解释:

  • -l : 显示进程id,显示主类全名或jar路径
  • -q : 显示进程id
  • -m : 显示进程id, 显示JVM启动时传递给main()的参数
  • -v : 显示进程id,显示JVM启动时显示指定的JVM参数

hostid :

主机或其他服务器ip

最常用示例:

  • jps -l 输出jar包路径,类全名
  • jps -m 输出main参数
  • jps -v 输出JVM参数

二、jinfo

jinfo是用来查看JVM参数和动态修改部分JVM参数的命令。

命令格式:

jinfo [option] 

options参数解释:

no options 输出所有的系统属性和参数

  • -flag 打印指定名称的参数
  • -flag [+|-] 打开或关闭参数
  • flag = 设置参数
  • -flags 打印所有参数
  • -sysprops 打印系统配置

三、jstat

jstat命令是使用频率比较高的命令,主要用来查看JVM运行时的状态信息,包括内存状态、垃圾回收等。

命令格式:

jstat [option] VMID [interval] [count ]

其中VMID是进程id,interval是打印间隔时间(毫秒),count是打印次数(默认一直打印)

option参数解释:

  • -class class loader的行为统计
  • -compiler HotSpt JIT编译器行为统计
  • -gc 垃圾回收堆的行为统计
  • -gccapacity 各个垃圾回收代容量(young,old,perm)和他们相应的空间统计
  • -gcutil 垃圾回收统计概述
  • -gccause 垃圾收集统计概述(同-gcutil),附加最近两次垃圾回收事件的原因
  • -gcnew 新生代行为统计
  • -gcnewcapacity 新生代与其相应的内存空间的统计
  • -gcold 年老代和永生代行为统计
  • -gcoldcapacity 年老代行为统计
  • -printcompilation HotSpot编译方法统计

四、 jstack

jstack是用来查看JVM线程快照的命令,线程快照是当前JVM线程正在执行的方法堆栈集合。使用jstack命令可以定 位线程出现长时间卡顿的原因,例如死锁,死循环等。jstack还可以查看程序崩溃时生成的core文件中的stack信 息。

命令格式:

jstack [options] option

参数解释:

  •  -F 当使用jstack 无响应时,强制输出线程堆栈。
  •  -m 同时输出java堆栈和c/c++堆栈信息(混合模式)
  • -l 除了输出堆栈信息外,还显示关于锁的附加信息

cpu占用过高问题:

1.使用Process Explorer工具找到cpu占用率较高的线程

2.在thread卡中找到cpu占用高的线程id

3.线程id转换成16进制

4.使用jstack -l 查看进程的线程快照

5.线程快照中找到指定线程,并分析代码

五、jmap

jmap可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。

命令格式:

jmap [option] (连接正在执行的进程)

option参数解释:

如果使用不带选项参数的jmap打印共享对象映射,将会打印目标虚拟机中加载的每个共享对象的起始 地址、 映射大小以及共享对象文件的路径全称。

  • -heap 打印java heap摘要
  • -histo[:live] 打印堆中的java对象统计信息
  •  -clstats 打印类加载器统计信息
  • -finalizerinfo 打印在f-queue中等待执行finalizer方法的对象
  •  -dump: 生成java堆的dump文件 dump-options: live 只转储存活的对象,如果没有指定则转储所有对象 format=b 二进制格式 file= 转储文件到

六、jhat

hat是用来分析jmap生成dump文件的命令,jhat内置了应用服务器,可以通过网页查看dump文件分析结果,jhat一 般是用在离线分析上。

命令格式

jhat [option][dumpfile]

option参数解释:

  • -stack false: 关闭对象分配调用堆栈的跟踪
  •  -refs false: 关闭对象引用的跟踪
  •  -port : HTTP服务器端口,默认是7000
  • -debug : debug级别
  • -version 分析报告版本

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...