前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JVM系列——5个常用的命令与示例

JVM系列——5个常用的命令与示例

作者头像
田维常
发布2020-04-17 17:36:06
8030
发布2020-04-17 17:36:06
举报
文章被收录于专栏:Java后端技术栈cwnait

1、jps

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 theaccess permissions.

查看Java进程

我的服务器上发布了我的web项目使用命令

jsp -l

也可以直接使用jps

无参数:显示进程的ID和类的名称 -q:仅显示进程ID -m:输出传入 main 方法的参数 -l:输出java进程全路径,比如应用程序主类完整package名称或jar完整名称 -v:输出jvm参数,比如堆大小,此命令方便我们查看JVM大小,不用去找配置文件 -V:输出通过flag文件(.hotsportrc或-XX:Flags=filename)传递到JVM中的参数

另外,也可以使用ps -ef|grep java来查看java进程

2、jinfo

The jinfo command prints Java configuration information for a specified Javaprocess or core file or a remote debug server. The configuration informationincludes Java system properties and Java Virtual Machine (JVM) command-lineflags.

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

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

继续使用上面的pid

jinfo -flag UseG1GC PID查看当前使用的是不是G1垃圾收集器

-XX:-UseG1GC 表示不是使用G1作为垃圾收集器。

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

jinfo -flag [+|-] PIDjinfo -flag = PID(4)查看曾经赋过值的一些参数

jinfo -flags PID

3、jstat

The jstat command displays performance statistics for an instrumented JavaHotSpot VM. The target JVM is identified by its virtual machine identifier, orvmid option.

查看虚拟机性能统计信息

jstat -class PID 1000 10

查看某个java进程的类装载信息,每1000毫秒输出一次,共输出10次

查看垃圾收集信息

jstat -gc PID 1000 10

4、jstack

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

查看线程堆栈信息

jstack PID

可以通过此命令来排查死锁的问题。

代码如下:

代码语言:javascript
复制
public class MyLock {
   public static Object object1=new Object();
   public static Object object2=new Object();
}
代码语言:javascript
复制
public class DeadLockTest {
   public static void main(String[] args) {
       DeadLock deadLock1=new DeadLock(true);
       DeadLock deadLock2=new DeadLock(false);
       Thread thread1=new Thread(deadLock1);
       Thread thread2=new Thread(deadLock2);
       thread1.start();
       thread2.start();
  }
}

运行结果:

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

提示发现死锁。

5、jmap

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

生成堆转储快照,打印出堆内存相关信息。

-XX:+PrintFlagsFinal -Xms300M -Xmx300M设置JVM参数使用jmap -heap PID

dump出堆内存相关信息,

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

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

一般在开发中,JVM参数可以加上下面两句,

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

这样内存溢出时,会自动dump出该文件。

关于dump文件的分析后面再细说,今天就分享到这里。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java后端技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、jps
  • 2、jinfo
  • 3、jstat
  • 4、jstack
  • 5、jmap
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档