码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JVM系列——jvm常用指令,问题排查


    JVM

    • 一、JVM常用指令
      • 1、jps(Java Process Status)
      • 2、jstat(Java Virtual Machine statistics monitoring tool)
        • (1)`jstat -gc pid 1000 10` 每隔1秒打印1次,共打印10次
        • (2)`jstat -gccapacity pid 1000 10`
        • (3)`jstat -gcutil pid 1000 10`
        • (4)`jstat -gccause pid 1000 10`
        • (5)`jstat -gcnew pid 1000 10`
        • (6)`jstat -gcold pid 1000 10`
        • (7)`jstat -gcpermcapacity pid 1000 10`
        • (8)使用jstat排查内存泄露
      • 3、jinfo(Java Virtual Machine Configuration Information)
        • (1)`jinfo -flag name pid` 查看指定的参数
        • (2)`jinfo -flag name=value pid` 修改指定名称的参数,不需要重启jvm虚拟机
        • (3)jinfo -flags pid 显示全部的配置参数
        • (4)jinfo -sysprops pid 以键值对的方式展示jvm虚拟机的全部属性
      • 4、jmap(JVM Meroy Map)
        • (1)`jmap -dump:live,format=b,file=filename.hprof pid` 生成dump文件

    一、JVM常用指令

    1、jps(Java Process Status)

    jps
       -l:输出进程的全类名,如果是jar包,则输出jar完整路径
       -m:输出虚拟机进程启动时传递给主类main()的参数
       -v:列出虚拟机进程启动时的jvm参数
       注意:如果某java进程关闭了默认开启的UsePerfData参数(即使用参数-XX:-UsePerfData),那么jps命令(以及jstat)将无法探知该进程
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    2、jstat(Java Virtual Machine statistics monitoring tool)

    jstat是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。在没有GUI图形界面时,它将是运行期定位虚拟机性能问题的首选工具,常用于检测垃圾回收问题以及内存泄漏问题。

    (1)jstat -gc pid 1000 10 每隔1秒打印1次,共打印10次

    在这里插入图片描述各个参数含义:
    新生代相关:
    S0C:幸存区一的大小(字节)
    S1C:幸存区二的大小(字节)
    S0U:幸存区一已使用的大小(字节)
    S1U:幸存区二已使用的大小(字节)
    EC: Eden空间的大小(字节)
    EU:Eden空间已使用的大小(字节)

    老年代相关:
    OC:老年代的大小(字节)
    OU:老年代已使用的大小(字节)

    方法区(元空间)相关:
    MC:方法区的大小
    MU:方法区已使用的大小
    CCSC:压缩类空间的大小
    CCSU:压缩类空间已使用的大小

    其它
    YGC:是指从启动到当前时刻young gc次数
    YGCT:是指从启动到当前时刻young gc消耗的时间(秒)
    FGC: 是指从启动到当前时刻full gc次数
    FGCT:是指从启动到当前时刻full gc消耗的时间(秒)
    GCT:是指从用启动到当前时刻gc消耗的总时间

    (2)jstat -gccapacity pid 1000 10

    显示与-gc基本相同,但输出关注Java各个区域使用到的最大,最小空间。

    (3)jstat -gcutil pid 1000 10

    显示内容与-gc基本相同,输出百分占比,例如:
    在这里插入图片描述

    (4)jstat -gccause pid 1000 10

    该命令会额外展示gc产生的原因
    在这里插入图片描述

    (5)jstat -gcnew pid 1000 10

    -gcnew:显示新生代gc状况
    -gcnewcapacity:与上面基本相同,主要关注使用到的最大、最小空间
    
    • 1
    • 2

    (6)jstat -gcold pid 1000 10

     -gcold:显示老年代gc状况
     -geoldcapacity:与gcold基本相同,注意关注使用到的最大、最小空间
    
    • 1
    • 2

    (7)jstat -gcpermcapacity pid 1000 10

    该命令显示永久代使用到的最大最小空间。

    (8)使用jstat排查内存泄露

    3、jinfo(Java Virtual Machine Configuration Information)

    jinfo是jdk提供的一个可以实时查看和修改java虚拟机各种配置参数和系统属性的命令工具。使用jps -v可以查看Java虚拟机启动时显示指定的参数,查看没有显示指定的参数就可以使用jinfo指令进行查看。

    (1)jinfo -flag name pid 查看指定的参数

    jinfo -flag MaxHeapSize 123  --查看进程123的堆区的最大值
    
    • 1

    (2)jinfo -flag name=value pid 修改指定名称的参数,不需要重启jvm虚拟机

    jinfo -flag MaxHeapSize=2g 123  --设置进程123的堆区最大为2g
    
    • 1

    (3)jinfo -flags pid 显示全部的配置参数

    (4)jinfo -sysprops pid 以键值对的方式展示jvm虚拟机的全部属性

    4、jmap(JVM Meroy Map)

    jamp的作用一方面是获取dump文件(堆转储快照文件,二进制文件),它还可以获取目标java进程的内存相关信息,包含java堆区各区域的使用情况,堆中对象的统计信息,类加载信息等

    (1)jmap -dump:live,format=b,file=filename.hprof pid 生成dump文件

    live:仅将存活的对象dump出
    format:编码格式
    flie:生成的文件名和路径
    
    • 1
    • 2
    • 3
  • 相关阅读:
    揭秘小程序上线不到一周,每天2万销售额,究竟怎么做到的?
    四、MyBatis-Plus 查询
    拯救 4G 显卡: PyTorch 节省显存的策略总结
    HashMap添加元素用到hashCode
    【最新计算机毕业设计】JAVA基于微信小程序的英语学习激励系统
    TcpConnection的读写操作【深度剖析】
    常用的Content-Type对比
    免费最强下载工具IDM,没有之一
    四台kvm虚拟机搭建Hadoop HA集群
    Css 设置从上到下的渐变色: 0到70%为yellow,然后线性地变成透明。
  • 原文地址:https://blog.csdn.net/weixin_43980461/article/details/125379189
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号