Hello 大家好,我是鸭血粉丝,不知道你有没有过这样的经历,经常在面试的时候被问到 JDK 相关的命令,如何排查线上的问题,线上程序突然崩了要怎么处理,等等类似这种场景。其实并不是每个开发人员都能有这种实战经验,现实工作中往往很多开发人员是接触不到线上环境的。但是作为一个以 Java 谋生的程序员,如果连这些 JDK 自带的一些命令都不知道,那也说不过去。

阿粉以前也是这样,从来没有接触过线上环境,有任何问题都是运维人员去处理,因为相关制度不允许开发人员接触生产服务器。但是作为一个有梦想的开发人员,不能接触不代表就不用学,阿粉还是私下好好学习了一波,万一哪天就用上了呢。

JDK 常用命令

先给大家看一张总览图,然后我们一个个命令去使用一下,感受一下。

JPS

说明:首先通过上图,我们看到使用 jps 或者 jps | grep -v Jps 命令的时候是可以找到当前系统所有JVM。上面第二条命令是过滤本身的 Jps 程序。可以看到,输入这个命令后,会展示出当前系统所有的 Java 程序,并且会输出进程号 pid(也就是前面的数字)。

我们通过命令 man jps 简单的看下说明,如下:

可以看到 jps 命令有五个参数,每个参数的含义如下,

-q: 不输出类名信息和参数,只输出进程号

-m:展示输入到 main 方法的参数

-l:展示 main class 全路径

-v:展示输入 JVM 的参数

-V:不输出路径,只输出进程号和jar

我们依次输入试下,如下图

Jinfo

通过上一步我们可以获得对应 JVM 的进程号,这为我们后续的操作提供了便利,后续的操作都会使用到进程号。

我们先使用一下命令,在使用前我们先获取进程号,我这里服务器运行的进程号为 2528,然后输入jinof 2528

通过上图,我们看到当前 JVM 的版本以及其他详细信息,并且可以看到服务器以及环境变量等一系列信息。同样的我们使用 man jinfo 命令看下手册。

该命令主要是用户查看当前虚拟机相关信息,我们就不过多介绍了。

Jstat

jstat命令主要是用来监控虚拟机的状态的,可以查看虚拟机 GC 的情况,如下命令jstat -gcutil 2528 1000 10表示每 1000 毫秒输出一次进程 2528 的 GC 情况,并且总共输出 10 次。

jstat 的手册比较长,大家感兴趣可以自行去查看下,这里只贴上面一部分给大家看下。

上面执行的jstat -gcutil 2528 1000 10 如果修改成这个jstat -gcutil -h3 2528 1000 10,最后的效果会是下图,我们可以看到每三行就增加了一个表头,更多命令大家可以自己试试。

Jmap

jmap 命令用于生成dump 文件,jmap -dump:live,format=b,file=dump.bin 2528创建 dump 文件如下。

通过jmap 命令我们可以生成内存快照文件,用于分析程序异常时的内存信息,并且配合 jhat命令可以更好的使用。

Jhat

上面提到我们在使用 jmap 的时候生成了一个内存快照文件,那我们如何查看这个内存文件呢?这里就需要结合jhat命令了。我们使用jhat dump.bin 就可以启动一个服务,然后通过浏览器打开默认的 7000 端口来查看信息。

访问 7000 端口如下:

Jstack

jstack用于生成java虚拟机当前时刻的线程快照,线程快照是当前 java 虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。线程出现停顿的时候通过 jstack 来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。

使用命令jstack 2528 查看线程堆栈情况如下:

通过这个命令我们可以看到进程对应的线程执行情况,可以分析哪些线程在允许,哪些线程在等待。

总结

JDK 常见的命令阿粉就给大家介绍到这里,在平时的工作和学习中大家可以尝试去使用一下,感受一下,这样就算是在面试的时候或者实际要用的时候就能做的得心应手。

写在最后

最后邀请你加入我们的知识星球,这里有 1700+ 优秀的人与你一起进步,如果你是小白那你是稳赚了,很多业内经验和干货分享给你;如果你是大佬,那可以进来我们一起交流分享你的经验,说不定日后我们还可以有合作,给你的人生多一个可能。

java 面试问jdk版本_面试常被问到的 JDK 命令,你知道几个?相关推荐

  1. java tcp 阻塞等待应答_面试常问!TCP 的三次握手与四次挥手理解

    来源:青柚_ blog.csdn.net/qq_38950316/article/details/81087809 三次握手过程理解 四次挥手过程理解 常见面试题 先来张图! 序列号seq: 占4个字 ...

  2. java切换jdk版本_切换JDK版本quick

    最近遇到一个小问题,同时做两个项目,jdk版本一个是5,一个是6,我也去网上找了找方法,但是感觉不是特别好用,最后自己通过一些环境变量设置的技巧和一些批处理命令来使得这件事情只需要双击,输入一个数字回 ...

  3. java编译器jdk版本_以编程方式确定Java类的JDK编译版本

    java编译器jdk版本 当需要确定使用哪个JDK版本来编译特定的Java .class文件时, 通常使用的方法是使用javap并在javap输出中查找列出的"主要版本". 我在我 ...

  4. java 对应sql驱动版本_关于Oracle JDBC驱动版本、JDK版本、数据库版本对应关系(相关的报错:ORA-28040)...

    关于Oracle JDBC驱动版本.JDK版本.数据库版本对应关系 说明: 1.Oracle JDBC驱动版本查看方式(Oracle JDBC驱动程序随Oracle数据库服务器一起提供)(用户:Ora ...

  5. **Java有哪些悲观锁的实现_面试4连问:乐观锁与悲观锁的概念、实现方式、场景、优缺点?...

    推荐阅读: 数据库面试4连问:分库分表,中间件,优缺点,如何拆分? 终极手撕之架构大全:分布式+框架+微服务+性能优化,够不够? 消息队列面试,你能顶得住面试官这波10大连环炮的攻势吗? 01 乐观锁 ...

  6. jep290涉及jdk版本_针对JDK 14提议的另外六个JEP

    jep290涉及jdk版本 Mark Reinhold最近的消息宣布了六个新的"建议针对JDK 14的JEP ": JEP 345 , JEP 361 , JEP 363 , JE ...

  7. java 面试题 生产者 消费者_面试大厂必看!就凭借这份Java多线程和并发面试题,我拿到了字节和美团的offer!...

    最近好多粉丝私信我说在最近的面试中老是被问到多线程和高并发的问题,又对这一块不是很了解,很简单就被面试官给问倒了,被问倒的后果当然就是被刷下去了,因为粉丝要求,我最近也是花了两天时间 给大家整理了这一 ...

  8. idea怎么看jdk版本_怎么看自己的jdk版本

    这个主要是在cmd下输入java-version来查看,64位的效果如下:如果没有标明是多少位的,默认一般是32位的,希望对你有用,我是ndk吧吧主,有问题可以ndk吧留言,谢谢! . 就安装最新版就 ...

  9. windows10怎么配置二个或多个JDK版本_详细图解

    本示例,一台windows10电脑安装JDK1.7和JDK1.8二个版本 基础条件:安装好JDK1.7和JDK1.8 windows10怎么配置二个或多个JDK不同版本的步骤,如下: 第一步:配置ja ...

最新文章

  1. 一条简单的更新语句,MySQL是如何加锁的?
  2. TP 框架没有考虑完善的功能点:1、表达式查询不支持INSTR形式的查询
  3. 运维日常:群发邮件营销平台--EDM
  4. Cross Entropy梯度分布拉平
  5. 利用 T-sql 的从句 for xml path('') 实现多行合并到一行, 并带有分隔符
  6. 解决Mac按列浏览图加载慢的问题
  7. 泛化性的危机!LeCun发文质疑:测试集和训练集永远没关系...
  8. [DB]MYSQL外键(Foreign Key)的使用(转载)
  9. python中给变量赋值时、既确定了变量的值_python中将函数赋值给变量时需要注意的一些问题...
  10. linux连接交换机软件,如何用超级终端连接交换机 - 全文
  11. 如何修改计算机背景色,照片换背景颜色 电脑如何修改照片底色?如何修改照片背景色?...
  12. 自举电容的工作原理-3句话总结
  13. Python+matplotlib绘制极坐标柱状图(南丁格尔玫瑰图)
  14. Pytorch学习记录(七):自定义模型 Auto-Encoders 使用numpy实现BP神经网络
  15. 【渝粤教育】电大中专机械制造技术基础作业 题库
  16. edge打开pdf不显示印章_一旦碰到Edge浏览器打不开pdf文件,只需这样做就可完美解决!...
  17. 企业招聘网络推广运营人员的岗位工作职责该如何写?
  18. 《图解TCP/IP》笔记
  19. 使用Tensorflow训练一元线性模型
  20. 运营商物联网卡ICCID号介绍

热门文章

  1. Android 动画之ScaleAnimation应用详解
  2. android搭建开发环境
  3. 中国系统集成商名单大全
  4. javaweb学习总结(四十三)——Filter高级开发
  5. MVC4 WebAPI
  6. 右键删除选中的行总提示rowIndex
  7. SEO--我们是不是走错了路?
  8. LINUX设置固定IP上网方法
  9. ELK报错no handler found for uri原因postman的原因
  10. PHP数组对象Json的互相转换