【JVM】JVM常用指令

news2024/11/18 3:47:57

文章目录

  • 1、jps
  • 2、jinfo
  • 3、jstat
  • 4、jstack
  • 5、jmap
  • 6、jhat

1、jps

jps(java process status tool), 用于查看java进程及相关信息,如果你想找到一个java进程的pid,可以使用jps命令代替linux的ps命令。

命令格式: jps 【options】 【hostid】
options参数:

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

hostid : 主机或其他服务器IP, 不写默认查看本机

2、jinfo

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

jinfo 【options】 <pid>

options参数解释:

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

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

pid代表进程id, 是必传参数

使用示例:

# 查看jvm参数和系统配置
jinfo 1234
jinfo -flags 1234
jinfo -sysprops 1234
 
# 查看打印GC日志参数
jinfo -flag PrintGC 1234
jinfo -flag PrintGCDetail 1234
 
# 打开/关闭 GC日志
jinfo -flag +PrintGC 1234
jinfo -flag -PrintGCDetail 1234
 
# 设置或自改参数值
jinfo -flag -Xms10m 1234

3、jstat

jstat命令主要用于查看jvm运行时状态信息, 包括内存状态、垃圾回收等

命令格式: jstat 【options】 <PID> 【interval】 【count】
interval 是打印间隔时间(ms), count 是打印次数, 默认一直打印

options参数解释:

  • -class : classLoader的行为统计
  • -complier : hotSpot JIT编译器行为统计
  • -gc : 垃圾回收堆的行为统计
  • -gccapacity: 各个垃圾回收容量和他们响应空间的统计
  • -gcutil: 垃圾回收统计概述
  • -gccause:垃圾收集统计概述, 附加最近两次垃圾回收事件的原因
  • -gcnew:新生代行为统计
  • -gcnewcapacity:新生代与其响应的内存空间的统计
  • -gcold:老年代与永久代行为统计
  • -gcoldcapacity:老年代行为统计
  • -printcompliation: hotSpot编译方法统计

使用示例:

jstat -gcutil 1234 1000 3   # 查看进程1234的垃圾回收信息, 没1s打印一次, 打印三次

在这里插入图片描述

字段解释:

  • S0: s0区使用百分比
  • S1:s1区使用百分比
  • E : Eden区使用百分比
  • O : old区使用百分比
  • M: 元数据区使用百分比
  • CCS:压缩使用百分比
  • YGC:年轻代垃圾回收次数
  • YGCT:年轻代垃圾回收消耗时间
  • FGC:Full GC垃圾回收次数
  • FGCT:FullGC 垃圾回收消耗时间
  • GCT: 垃圾回收消耗总时间
jstat -gc 1234 1000 3

-gc与-gcutil类似, 只不过输出的不是百分比,而是实际的值

在这里插入图片描述

字段解释:

  • S0C: so区大小
  • S1C:S1区大小
  • S0U:s0已使用大小
  • S1U:S1已使用大小
  • EC: Eden区大小
  • EU: Eden区已使用大小
  • OC: 老年代大小
  • OU:老年代已使用大小
  • MC: 方法区大小
  • MU: 方法区已使用大小
  • CCSC: 压缩类空间大小
  • CCSU: 压缩类空间已使用大小
  • YGC: 年轻代垃圾回收次数
  • YGCT:年轻代垃圾回收消耗时间
  • FGC: Full GC次数
  • FGCT: Full GC消耗时间
  • GCT:垃圾回收消耗总时间

4、jstack

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

命令格式: jstack 【options】 【pid】
options参数解释:

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

5、jmap

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

命令格式: jmap 【options】 <pid>
options参数解释 :

  • no options 如果使用不带选项参数的jmap打印共享对象映射, 将会打印目标虚拟机中加载的每个对象的起始地址、映射大小及共享对象文件的路径全称。(很占资源, 一般不会使用)
  • -heap: 打印java heap 摘要
  • -histo[:live] : 打印堆中的java对象统计信息
  • -clstats : 打印类加载器统计信息
  • -finalizerinfo:打印在f-queue中等待执行finalizer方法的对象
  • -dump: 生成java堆的dump文件, dump-options:
    • live : 只转储存活的对象,如果没有指定则转储所有对象
    • format=b: 二进制格式
    • file=[Path] : 将文件转储到指定文件中

使用示例:

jmap -dump:live,format=b,file=/dump.bin 1234   #将java堆中存活的对象信息转储到/dump.bin文件中

我们来看一下堆信息:

jmap -heap 1234

输出:

Attaching to process ID 11666, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.25-b02
 
using thread-local object allocation.
Parallel GC with 4 thread(s)
 
Heap Configuration: //堆内存初始化配置
   MinHeapFreeRatio  = 0 //对应jvm启动参数-XX:MinHeapFreeRatio设置JVM堆最小空闲比率(default 40)
   MaxHeapFreeRatio  = 100 //对应jvm启动参数 -XX:MaxHeapFreeRatio设置JVM堆最大空闲比率(default 70)
   MaxHeapSize= 1073741824 (1024.0MB) //对应jvm启动参数-XX:MaxHeapSize=设置JVM堆的最大大小
   NewSize    = 22020096 (21.0MB) //对应jvm启动参数-XX:NewSize=设置JVM堆的新生代的默认大小
   MaxNewSize = 357564416 (341.0MB) //对应jvm启动参数-XX:MaxNewSize=设置JVM堆的新生代的最大大小
   OldSize    = 45088768 (43.0MB) //对应jvm启动参数-XX:OldSize=<value>:设置JVM堆的老年代的大小
   NewRatio   = 2 //对应jvm启动参数-XX:NewRatio=:新生代和老生代的大小比率
   SurvivorRatio     = 8 //对应jvm启动参数-XX:SurvivorRatio=设置新生代中Eden区与Survivor区的大小比值
   MetaspaceSize     = 21807104 (20.796875MB) // 元数据区大小
   CompressedClassSpaceSize = 1073741824 (1024.0MB) //类压缩空间大小
   MaxMetaspaceSize  = 17592186044415 MB //元数据区最大大小
   G1HeapRegionSize  = 0 (0.0MB) //G1垃圾收集器每个Region大小
 
Heap Usage: //堆内存使用情况
PS Young Generation 
Eden Space: //Eden区内存分布
   capacity = 17825792 (17.0MB) //Eden区总容量
   used     = 12704088 (12.115562438964844MB) //Eden区已使用
   free     = 5121704 (4.884437561035156MB) //Eden区剩余容量
   71.26801434685203% used //Eden区使用比率
 
From Space: //其中一个Survivor区的内存分布
   capacity = 2097152 (2.0MB)
   used     = 1703936 (1.625MB)
   free     = 393216 (0.375MB)
   81.25% used
To Space: //另一个Survivor区的内存分布
   capacity = 2097152 (2.0MB)
   used     = 0 (0.0MB)
   free     = 2097152 (2.0MB)
   0.0% used
PS Old Generation
   capacity = 52428800 (50.0MB) //老年代容量
   used     = 28325712 (27.013504028320312MB) //老年代已使用
   free     = 24103088 (22.986495971679688MB) //老年代空闲
   54.027008056640625% used //老年代使用比率
 
15884 interned Strings occupying 2075304 bytes.

输出存活对象信息 :

jmap -histo:live 1234 | more

在这里插入图片描述

6、jhat

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

命令格式: jhap 【options】 【dumpfile】

option参数解释:

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

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

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

相关文章

ansible常见模块应用简介

目录 command, shell, raw模块file 模块copy 模块fetch 模块lineinfile模块unarchive解包解压缩 模块user 模块yum_repository 仓库管理yum/dnf模块Service/systemd模块firewalld 模块nmcli 模块get_url 模块mount模块 注意&#xff1a;该文档需要有 Linux 基础的看 command, s…

【架构基础】高内聚低耦合

软件设计目标&#xff1a;实现需求、易于重用、易于理解、没有冗余。 Dont reinvent the wheel, just realign it. --Anthony J D’ Angelo 高内聚低耦合&#xff0c;是软件工程中判断软件设计好坏的标准。主要评判模块或类的内聚性是否高&#xff0c;耦合度是否低。目的是使…

【图像处理】基于双目视觉的物体体积测量算法研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

TCP的安全和效率机制

目录 0.TCP协议格式 ​编辑 一.确认应答(安全机制) 二.超时重传(安全机制) 1.SYN丢包 2.ACK丢包 三.连接管理(安全机制) 1.三次握手建立连接 ​编辑 2.四次挥手断开连接 3.建立和断开连接 四.滑动窗口(效率机制) 五.流量控制(效率机制) 六.拥塞控制(安全机制) 七…

算法扩展第一次:收集雪花 【hash表,双指针,stl中的map】

算法详解 这道题需要新学的知识一个是双指针&#xff0c;一个是c库中的unordered_map容器 双指针 双指针原先我写过很多这方面的题&#xff0c;但是这道题我一开始是低估了它的难度&#xff0c;而且压根没有想到要用双指针&#xff0c;属于是长见识了&#xff0c;这道题的双…

Virtual box安装Ubuntu1804乱码

Virtual box安装Ubuntu1804乱码 1. 首先检查编码格式 运行以下命令打开locale配置文件&#xff1a; sudo nano /etc/default/locale2. 可能缺少字体&#xff0c;打开终端&#xff0c;先执行更新 sudo apt-get update 接着进入设置&#xff0c;搜索language&#xff0c;进入…

机器学习-搭建轻量级GPT2训练对话

在自己的机器上部署一个GPT简直太酷啦&#xff0c;因为模型数据缘故&#xff0c;所以这个机器人有时候傻傻的。。。 需要安装环境&#xff1a;python3.7 、Transformers4.2.0、pytorch1.7.0、nginx&#xff08;映射网页文件&#xff09; 我的系统&#xff1a;MAC m2 Mac默认是…

Jmeter如何安装jp@gc - Ultimate Thread Group插件(终极线程组)

首先明确一点&#xff0c;我们为什么要做压力测试&#xff1f; 压力测试是为了确保系统能够在负载高峰期和长时间运行的情况下保持高性能、稳定和可靠。同时也是软件开发生命周期中不可或缺的一环&#xff0c;帮助开发人员和系统管理员优化和调整系统&#xff0c;以提供卓越的…

2023春期末考试选择题R2-8计算最小生成树总权重详解

题目如图&#xff1a; 分析和计算&#xff1a; 题目给出一个图的邻接矩阵表示&#xff0c;要求求最小生成树的总开销。 根据Kruskal算法&#xff0c;根据邻接矩阵顶点连接情况&#xff0c;收集开销最小的边&#xff0c;直到所有顶点被收集&#xff0c;且无环路&#xff0c;即…

Debian 12 “bookworm“ 发布 - 通用操作系统

Debian 12 “bookworm” 发布 - 通用操作系统 基于 Linux kernel 6.1 LTS&#xff0c;支持 APFS 读写 请访问原文链接&#xff1a;https://sysin.org/blog/debian-12/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Debian 1…

(数组) 1365. 有多少小于当前数字的数字 ——【Leetcode每日一题】

❓1365. 有多少小于当前数字的数字 难度&#xff1a;简单 给你一个数组 nums&#xff0c;对于其中每个元素 nums[i]&#xff0c;请你统计数组中比它小的所有数字的数目。 换而言之&#xff0c;对于每个 nums[i] 你必须计算出有效的 j 的数量&#xff0c;其中 j 满足 j ! i 且…

希捷科技:具有周期性价值的全球云存储之王

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 总结&#xff1a; &#xff08;1&#xff09;根据Statista的数据&#xff0c;希捷科技是全球硬盘驱动器市场的领导者&#xff0c;在全球拥有约43%的市场份额。 &#xff08;2&#xff09;希捷科技的管理层近期已经宣布了一…

Node.js模块化学习笔记

Node.js模块化 模块化雨模块 将一个复杂的程序文件依据一定规则&#xff08;规范&#xff09;拆分成多个文件的过程称之为模块化。 其中拆分的每个文件就是一个模块&#xff0c;模块的内部数据是私有的&#xff0c;不过模块可以暴露内部数据以便其他模块使用 模块化项目 编…

Python课期末考试复习

简答 定义函数的规则 1、函数代码块以def关键词开头&#xff0c;后接函数标识符名称和圆括号() 2、任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。 3、函数的第一行语句可以选择性的使用文档字符串用于存放函数说明。 4、函数内容以冒号起始&#xf…

从前序与中序遍历序列构造二叉树

题目链接 从前序与中序遍历序列构造二叉树 题目描述 注意点 inorder.length preorder.lengthpreorder 和 inorder 均 无重复 元素inorder 均出现在 preorderpreorder 保证 为二叉树的前序遍历序列inorder 保证 为二叉树的中序遍历序列 解答思路 前序遍历的首个节点为根节…

[架构之路-211]- 需求- 软架构前的需求理解:ADMEMS标准化、有序化、结构化、层次化需求矩阵 =》需求框架

目录 前言&#xff1a; 一、什么是ADMES: 首先&#xff0c;需求是分层次的&#xff1a; 其次&#xff0c;需求是有结构的&#xff0c;有维度的 再次&#xff0c;不同层次需求、不同维度需求之间可以相互转化&#xff08;难点、经验积累&#xff09; 最终&#xff0c;标准…

UnitTest 学习

UnitTest 一、UnitTest 基本使用1. TestCase 测试用例2. TestSuite 和 TestRunner3. TestLoader 测试加载4. Fixture 二、断言与参数化断言参数化 三、测试报告获取项目的绝对路径登录案例跳过 一、UnitTest 基本使用 UnItTest 框架介绍 UnitTest是python自带的一个单元测试框…

HTTP 和 HTTPS 协议原理【网络基础】

文章目录 1. HTTP 的优点2. HTTP 的缺点明文可能会被窃听通信方可能被伪装报文可能被篡改 2.1 弥补 HTTP 的缺点&#xff08;概述&#xff09;加密明文通信加密内容加密 验证通信方报文完整性校验 3. HTTPS 协议3.1 SSL/TLS 协议概述3.2 加密机制对称加密非对称加密混合加密 3.…

一文终结SQL 子查询优化

概要 子查询&#xff08;Subquery&#xff09;的优化一直以来都是 SQL 查询优化中的难点之一。关联子查询的基本执行方式类似于 Nested-Loop&#xff0c;但是这种执行方式的效率常常低到难以忍受。当数据量稍大时&#xff0c;必须在优化器中对其进行去关联化&#xff08;Decoor…

深入理解深度学习——Transformer:基础知识

分类目录&#xff1a;《深入理解深度学习》总目录 相关文章&#xff1a; 作为当下最先进的深度学习架构之一&#xff0c;Transformer被广泛应用于自然语言处理领域。它不单替代了以前流行的循环神经网络(recurrent neural network, RNN)和长短期记忆(long short-term memory, …