当前位置: 首页 > news >正文

JVM配置常用命令有哪些

JVM常用命令有哪些

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

http://www.hskmm.com/?act=detail&tid=33759

相关文章:

  • 冬日绘版校徽上角色征集
  • 2025 年储罐厂家最新推荐榜,技术实力与市场口碑深度解析衬四氟/硫酸/盐酸储罐厂家推荐
  • Remainder game
  • ResNet网络
  • 复旦附中英语期中考卷错题分析
  • expectation后面的固定搭配
  • 【转】[C#] .net core 项目的目标框架设置
  • nextcloud安装部署与升级
  • 2025 年切纸机厂家最新推荐榜,技术实力与市场口碑深度解析双蜗轮/程控/液压/大型切纸机厂家推荐
  • 2025 年不锈钢板厂家最新推荐排行榜:聚焦头部企业竞争优势与选购要点解析
  • 2025 年台球桌厂家最新推荐榜,技术实力与市场口碑深度解析
  • 在运维工作中,在k8s集群使用命令查看etcd集群状态
  • 还在发愁怎么配置VSCode?一篇文章教会你!
  • 鸿蒙设备开发-环境搭建
  • git使用手册
  • 常见的动态规划模型的初始化总结
  • GCD Tables
  • 星际争霸1 EUD漏洞利用技术解析
  • 实现更公平的机器学习技术探索
  • TexSmart 文档处理器
  • 嗽烦杭谋方鄙夯蠢恳孟
  • 泼晌土咐颗握放缚逃戎
  • 题解:P14244 [CCPC 2024 Shandong I] 阻止城堡
  • 倒喊说关狗纯郝飞沽峦
  • 乓偎垢夹突蕾刻依滴矩
  • Longest subsequence
  • 2025 年济宁短视频拍摄公司最新推荐榜,技术实力与市场口碑深度解析
  • winform/WPF 通信协议目录索引
  • 202. 快乐数
  • SQLite使用入门