Java八股文 基础故障处理工具的指令【jps,jstate...】

文章目录

    • 一、 jps指令
      • 常见指令以及作用
    • 二、jstat
      • 常见指令以及作用
    • 三、jinfo
      • 常见指令以及作用
    • 四、jmap
      • 常见指令以及作用
    • 五、jhat
    • 六、jstack
      • 常见指令以及作用

一、 jps指令

jps指令能够列出正在运行的虚拟机进程,及这些进程的本地虚拟机唯一
ID
(LVMID,Local Virtual Machine Identifier)

例如

[root@VM-8-2-centos ~]# jps
10692 Jps
16964 jar

常见指令以及作用

选项作用
-q只输出id
-m输出虚拟机进程启动时, 传递给main的参数
-l输出主类全名,如果启动的是jar
-v输出虚拟机进程启动参数
  • jps -q 【只输出id】
[root@VM-8-2-centos ~]# jps -q
16964
11676
  • jps -m 【输出传递给main()的参数】
[root@VM-8-2-centos ~]# jps -m
11828 Jps -m
16964 jar --spring.profiles.active=prod --auth.formCheck=true
  • jps -l 【输出启动类全名】
[root@VM-8-2-centos ~]# jps -l
16964 sign-0.0.1-SNAPSHOT.jar
12008 sun.tools.jps.Jps
  • jps -v 【输出进程启动参数
[root@VM-8-2-centos ~]# jps -v
12401 Jps -Dapplication.home=/usr/local/jdk1.8.0_241 -Xms8m
16964 jar

二、jstat

jstat监视虚拟机各种运行状态信息的命令行工具,它将是运行期定位虚拟机性能问题的常用工具

常见指令以及作用

选项作用
-class监视类加载数量、卸载数量、总空间,以及类装载所需时间
-gc监视Java堆的状态
-gcutil监视内容于-gc类似,但主要关注空间使用百分比
-gccause和-gcutil一样,但会输出上一次gc原因

【vmid】可以通过jps -l获取

  • jstat -class 【vmid】 【监视类加载等信息】
[root@VM-8-2-centos dian-xhf]# jstat -class 16964
Loaded  Bytes  Unloaded  Bytes     Time   10284 19390.6        0     0.0       6.60
  • jstat -gc 【vmid】 【查看Java堆的状态】
[root@VM-8-2-centos dian-xhf]# jstat -gc 16964S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
12288.0 8192.0  0.0    0.0   147968.0 26136.3   55808.0    25116.2   59136.0 56068.7 7680.0 7058.2     15    0.223   3      0.341    0.564

-jstat -gcutil 【vmid】 【查看Java堆占用百分比】

[root@VM-8-2-centos dian-xhf]# jstat -gcutil 16964S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   0.00   0.00  17.66  45.00  94.81  91.90     15    0.223     3    0.341    0.564
  • S0 幸存0区域
  • S1 幸存1区域
  • E 伊甸园区
  • O 老年区
  • M 元空间 【有可能是P,表示永久代。具体的和jdk版本有关,笔者jdk版本是8】
  • YGC 年轻代的GC,也就是Minor GC ,轻量GC ,次数15
  • YGCT 轻量GC所耗时间 0.223
  • FGC 重量级GC次数 3
  • FGCT 重量级GC所耗时间 0.341
  • GCT 所有GC所耗费时间 0.564

三、jinfo

jinfo能实时查看和调整虚拟机各项参数

jps -v 可以查询虚拟机启动时,显示指定的参数,但如果想查看默认的参数,可以通过-flag的方式指定查看

常见指令以及作用

选项作用
-flag 打印vm的参数,name的值
-flag [+|-]开启或禁止vm的name参数
-flag <name>=<value>设置虚拟机参数name=flag
-flags打印虚拟机参数
-sysprops打印Java系统的配置
  • jinfo -flags 【vmid】【打印虚拟机参数】
[root@VM-8-2-centos dian-xhf]# jinfo -flags 16964
Attaching to process ID 16964, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.241-b07
Non-default VM flags: -XX:CICompilerCount=2 -XX:InitialHeapSize=33554432 -XX:MaxHeapSize=524288000 -XX:MaxNewSize=174587904 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=11010048 -XX:OldSize=22544384 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC 
Command line:  
  • jinfo -flag <name> 【vmid】【打印虚拟机参数name的值】
[root@VM-8-2-centos dian-xhf]# jinfo -flag CICompilerCount 16964
-XX:CICompilerCount=2
  • jinfo -sysprops 【vmid】【打印Java虚拟机设置】
[root@VM-8-2-centos dian-xhf]# jinfo -sysprops 16964
Attaching to process ID 16964, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.241-b07
java.runtime.name = Java(TM) SE Runtime Environment
java.vm.version = 25.241-b07
sun.boot.library.path = /usr/local/jdk1.8.0_241/jre/lib/amd64
java.protocol.handler.pkgs = org.springframework.boot.loader
java.vendor.url = http://java.oracle.com/
java.vm.vendor = Oracle Corporation
path.separator = :
file.encoding.pkg = sun.io
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
sun.os.patch.level = unknown
sun.java.launcher = SUN_STANDARD
user.country = US
user.dir = /usr/local/xhf/sign
java.vm.specification.name = Java Virtual Machine Specification
PID = 16964
java.runtime.version = 1.8.0_241-b07
java.awt.graphicsenv = sun.awt.X11GraphicsEnvironment
os.arch = amd64
java.endorsed.dirs = /usr/local/jdk1.8.0_241/jre/lib/endorsed
CONSOLE_LOG_CHARSET = UTF-8
line.separator = java.io.tmpdir = /tmp
java.vm.specification.vendor = Oracle Corporation
os.name = Linux
FILE_LOG_CHARSET = UTF-8
sun.jnu.encoding = UTF-8
java.library.path = /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
spring.beaninfo.ignore = true
java.specification.name = Java Platform API Specification
java.class.version = 52.0
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
os.version = 3.10.0-1160.88.1.el7.x86_64
user.home = /root
user.timezone = Asia/Shanghai
catalina.useNaming = false
java.awt.printerjob = sun.print.PSPrinterJob
file.encoding = UTF-8
java.specification.version = 1.8
catalina.home = /tmp/tomcat.9001.5870235700103250174
user.name = root
java.class.path = sign-0.0.1-SNAPSHOT.jar
java.vm.specification.version = 1.8
sun.arch.data.model = 64
sun.java.command = sign-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod --auth.formCheck=true
java.home = /usr/local/jdk1.8.0_241/jre
user.language = en
java.specification.vendor = Oracle Corporation
awt.toolkit = sun.awt.X11.XToolkit
java.vm.info = mixed mode
java.version = 1.8.0_241
java.ext.dirs = /usr/local/jdk1.8.0_241/jre/lib/ext:/usr/java/packages/lib/ext
sun.boot.class.path = /usr/local/jdk1.8.0_241/jre/lib/resources.jar:/usr/local/jdk1.8.0_241/jre/lib/rt.jar:/usr/local/jdk1.8.0_241/jre/lib/sunrsasign.jar:/usr/local/jdk1.8.0_241/jre/lib/jsse.jar:/usr/local/jdk1.8.0_241/jre/lib/jce.jar:/usr/local/jdk1.8.0_241/jre/lib/charsets.jar:/usr/local/jdk1.8.0_241/jre/lib/jfr.jar:/usr/local/jdk1.8.0_241/jre/classes
java.awt.headless = true
java.vendor = Oracle Corporation
catalina.base = /tmp/tomcat.9001.5870235700103250174
file.separator = /
java.vendor.url.bug = http://bugreport.sun.com/bugreport/
sun.io.unicode.encoding = UnicodeLittle
sun.cpu.endian = little
sun.cpu.isalist = 

四、jmap

jmap命令用于生成堆转储快照

常见指令以及作用

选项作用
-dump生成Java堆内存快照,格式为-dump:[live,]format=b,file=<filename>,其中live子参数说明是否只dump出存货对象
-heap显示Java堆详细信息
  • jmap -dump:[live,]format=b,file=<filename> 【vmid】【生成堆快照】
[root@VM-8-2-centos dian-xhf]# jmap -dump:format=b,file=dian.bin 13056
Dumping heap to /usr/local/xhf/dian-xhf/dian.bin ...
Heap dump file created
[root@VM-8-2-centos dian-xhf]# ls
backup  demo-0.0.1-SNAPSHOT.jar  dian.bin  LOG_PATH_IS_UNDEFINED  start.sh  stop.sh

jmap <option> <vmid>
option的官方介绍

<none>               to print same info as Solaris pmap
-heap                to print java heap summary
-histo[:live]        to print histogram of java object heap; if the "live"suboption is specified, only count live objects
-clstats             to print class loader statistics
-finalizerinfo       to print information on objects awaiting finalization
-dump:<dump-options> to dump java heap in hprof binary formatdump-options:live         dump only live objects; if not specified,all objects in the heap are dumped.format=b     binary formatfile=<file>  dump heap to <file>Example: jmap -dump:live,format=b,file=heap.bin <pid>
-F                   force. Use with -dump:<dump-options> <pid> or -histoto force a heap dump or histogram when <pid> does notrespond. The "live" suboption is not supportedin this mode.
-h | -help           to print this help message
-J<flag>             to pass <flag> directly to the runtime system

五、jhat

JDK提供jhat(JVM Heap Analysis Tool)命令与jmap搭配使用,来分析jmap生成的堆转储快照。jhat内置了一个微型的HTTP/Web服务器,生成堆转储快照的分析结果后,可以在浏览器中查看

基本不用,除非没有其它工具,因此本文不在记录相关指令


六、jstack

jstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照。

常见指令以及作用

选项作用
-F强制输出线程堆栈
-m打印Java和本地方法栈(c/c++的栈信息)
-l除了堆信息,打印额外的锁信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/82464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Langchain+GPT+向量数据库chromadb 来创建文档对话机器人

使用LangchainGPT向量数据库chromadb 来创建文档对话机器人 一.效果图如下&#xff1a; 二.安装包 pip install langchainpip install chromadbpip install unstructuredpip install jieba三.代码如下 #!/usr/bin/python # -*- coding: UTF-8 -*-import os # 导入os模块&…

为什么2022年秋招嵌入式开发岗位薪资大涨?

今天看到一个网友讨论的问题&#xff0c;其实这个问题也很简答。从嵌入式本身优势来说&#xff0c;首先是因为该行业人才人才需求大&#xff0c;据权威统计机构统计在所有软件开发类人才的需求中&#xff0c;对嵌入式工程师的需求达到全部需求量的60%~80%&#xff0c;并且每年以…

Docker 编译 Go 项目

Docker 编译 Go项目 背景步骤1. 构建一个基础镜像2. 在基础镜像上构建一个临时镜像编译3. 拷贝出编译的程序 背景 Go项目中用到cgo特性,生产环境部署时有的机器因glibc版本过低无法运行 version GLIBC_2.32 not found, required by bin/main 因此需要一个自动化部署的方法&…

数据结构(C语言)——双链表

有了单链表的编写经验&#xff0c;双链表变得格外容易。点击看前一篇-单链表 下面是代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define E int typedef struct node {E element;struct node* pre;struct node* next; }node; void initialise(node* h…

JavaScript中的`async`和`await`关键字的作用

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ async关键字⭐ await 关键字3. 错误处理 ⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对We…

selenium中ActionChains方法详细讲解

前言 本文将介绍Selenium中的ActionChains类及其使用方法&#xff0c;帮助您模拟用户在网页上的鼠标和键盘操作。了解ActionChains的常用方法和示例代码&#xff0c;可轻松实现移动鼠标、点击元素、拖拽元素等操作。通过本文的学习&#xff0c;您能更好地应用ActionChains解决自…

nginx中sent_timeout属性使用注意事项

send_timeout使用注意事项 send_timeout:指客户端向服务器发送请求并且等待服务器返回数据的时间&#xff0c;超过这个时间链接就断开。如果咱们返回的数据复杂&#xff0c;很耗时&#xff0c;就将该值设置大些。注意该时间指准备过程&#xff0c;不是传输过程&#xff08;下载…

Python基础指令(上)

Python基础指令上 常量和表达式变量和类型1. 什么是变量2. 变量的语法2.1 定义变量2.2 使用变量 3. 变量的类型4. 为什么要有这么多类型5. 动态类型特性 注释输入输出1. 程序与用户的交互2. 通过控制台输出3. 通过控制台输入 运算符1. 算术运算符2. 关系运算符3. 逻辑运算符4. …

Linux文件出现“M-oM-;M-?” ^M 等情况

1、当在编辑linux系统的文件时&#xff0c;会出现如下情况&#xff1a; 解决方法&#xff1a;单个文件可以使用vim 进行修改&#xff0c;shift :&#xff0c; 然后 set nobomb 2、当文件出现每一行末尾^M的情况&#xff1a; 解决方法&#xff1a;使用vi的替换功能。启动vi&am…

vue使用swiper轮播组件开启loop模式点击不了问题处理

1.原本在这里的点击事件换成 :data-href"func_str(item)" 2.在methods里面写好方法 func_str(item){ return JSON.stringify(item); } 3.在原本的调用调用轮播图方法里面加入点击事件 onClick:function(swiper){ var item JSON.parse(swiper.clickedSlide.attrib…

随手笔记(四十五)——idea git冲突

图片为引用&#xff0c;在一次导入项目至gitee的过程中&#xff0c;不知道为什么报了403&#xff0c;很奇怪的一个错误&#xff0c;网上很多的答案大概分成两种。 第一种是最多的&#xff0c;直接找到windows凭据删掉 很抱歉的告诉各位&#xff0c;你们很多人到这里就已经解…

相机HAL

相机HAL 1、概览实现 HAL2、相机 HAL2.1 AIDL 相机 HAL2.2 相机 HAL3 功能2.3 Camera HAL1 概览 相机 HAL 相机 实现 HAL android12-release 1、概览实现 HAL HAL 位于 相机驱动程序 和 更高级别的 Android 框架 之间&#xff0c;它定义您必须实现的接口&#xff0c;以便应用…

php高级 TP+Redis实现发布订阅和消息推送案例实战

Redis 的发布-订阅模型是一种消息通信模式&#xff0c;它允许客户端之间通过特定的频道进行通信。在这种模型中&#xff0c;有些客户端负责发布消息&#xff08;发布者&#xff09;&#xff0c;而其他客户端则订阅它们感兴趣的频道并接收这些消息&#xff08;订阅者&#xff09…

机器学习入门与实践:从原理到代码

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 在本文中&#xff0c;我…

fork的一些打印题

1. 代码&#xff1a; #include<sys/types.h> #include<stdio.h>int main() {int remaining 4;int child_pid;while(remaining > 0){child_pid fork();if(child_pid 0) break;remaining--;}printf("P");wait();return 0; }结果&#xff1a; &…

Solidity 小白教程:21. 调用其他合约

Solidity 小白教程&#xff1a;21. 调用其他合约 调用已部署合约 开发者写智能合约来调用其他合约&#xff0c;这让以太坊网络上的程序可以复用&#xff0c;从而建立繁荣的生态。很多web3项目依赖于调用其他合约&#xff0c;比如收益农场&#xff08;yield farming&#xff0…

企业架构LNMP学习笔记48

数据结构类型操作&#xff1a; 数据结构&#xff1a;存储数据的方式 数据类型 算法&#xff1a;取数据的方式&#xff0c;代码就把数据进行组合&#xff0c;计算、存储、取出。 排序算法&#xff1a;冒泡排序、堆排序 二分。 key&#xff1a; key的命名规则不同于一般语言…

每日一题9.17打家劫舍2

213. 打家劫舍213. 提示 中等 1.5K 相关企业 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 &#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#xff0c;相邻的房屋装有相互连…

实时云渲染技术,元宇宙应用的核心之一

1. 元宇宙介绍 元宇宙&#xff08;Metaverse&#xff09;是一种电子世界的概念&#xff0c;它是一个由计算机生成的虚拟世界&#xff0c;允许用户在其中进行交互和体验虚拟生活。元宇宙的设计目的是创造一个与现实世界相似的体验&#xff0c;用户可以通过计算机图形或其他技术…

GitHub平台 Bookget操作

以bookget为例&#xff0c;熟悉github平台。 https://github.com/deweizhu/bookget 选择该界面中的“Wiki”&#xff0c;右侧边栏中是文章的结构大纲。 下载bookget软件。 依照说明&#xff0c;安装bookget环境。