首页 > 系统相关 >【内存分析】用于内存分析定位的指令 jmap, jstat, jinfo, jstack

【内存分析】用于内存分析定位的指令 jmap, jstat, jinfo, jstack

时间:2023-05-09 10:02:46浏览次数:43  
标签:jstack 回收 幸存 内存 大小 jstat 垃圾

用于内存分析定位的指令/工具有: jmap, jstat, jinfo, jstack

jmap

(1)分析进程中的内存使用情况,是多少个什么样的对象占用了多大的内存,这类型的分析
(2)也可以导出堆转储文件, 导出后,再来分析

jstack

这个是看cpu 的,看各个线程的执行状态,如果 cpu 比较高,就是用 jstack 来定位分析。
(1)如果内存不足,gc 回收有问题,就会造成频繁gc, 也会造成 cpu 很高。这类型的问题
(2)或者程序死锁了,卡住不动了,就得看一下它里面的线程在搞啥子

jinfo

jinfo pid: 查看java系统参数

jstat

查看堆内存各部分的使用量,以及加载类的数量

通过 jstat -options 可以查看 Jstat 带的参数

jstat -options
-class
-compiler
-gc
-gccapacity
-gccause
-gcmetacapacity
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcutil
-printcompilation

关于 jstat 的一些指令使用 及 参数说明

jstat [-命令选项] [vmid] [间隔时间(毫秒)] [查询次数]      查看堆内存各部分的使用量,以及加载类的数量
jstat -gc pid 可以评估程序内存使用及GC压力整体情况, // 参数说明
    S0C:第一个幸存区的大小,单位KB 
    S1C:第二个幸存区的大小 
    S0U:第一个幸存区的使用大小
    S1U:第二个幸存区的使用大小 
    EC:伊甸园区的大小 
    EU:伊甸园区的使用大小 
    OC:老年代大小 
    OU:老年代使用大小 
    MC:方法区大小(元空间) 
    MU:方法区使用大小 
    CCSC:压缩类空间大小 
    CCSU:压缩类空间使用大小 
    YGC:年轻代垃圾回收次数 
    YGCT:年轻代垃圾回收消耗时间,单位s 
    FGC:老年代垃圾回收次数  
    FGCT:老年代垃圾回收消耗时间,单位s 
    GCT:垃圾回收消耗总时间,单位s 
jstat -gccapacity [pid] 堆内存统计
    NGCMN:新生代最小容量 
    NGCMX:新生代最大容量 
    NGC:当前新生代容量 
    S0C:第一个幸存区大小 
    S1C:第二个幸存区的大小 
    EC:伊甸园区的大小 
    OGCMN:老年代最小容量 
    OGCMX:老年代最大容量 
    OGC:当前老年代大小 
    OC:当前老年代大小 
    MCMN:最小元数据容量 
    MCMX:最大元数据容量 
    MC:当前元数据空间大小 
    CCSMN:最小压缩类空间大小 
    CCSMX:最大压缩类空间大小 
    CCSC:当前压缩类空间大小 
    YGC:年轻代gc次数 
    FGC:老年代GC次数 
jstat -gcnew [pid]  新生代垃圾回收统计
    S0C:第一个幸存区的大小 
    S1C:第二个幸存区的大小 
    S0U:第一个幸存区的使用大小 
    S1U:第二个幸存区的使用大小 
    TT:对象在新生代存活的次数 
    MTT:对象在新生代存活的最大次数 
    DSS:期望的幸存区大小 
    EC:伊甸园区的大小 
    EU:伊甸园区的使用大小 
    YGC:年轻代垃圾回收次数 
    YGCT:年轻代垃圾回收消耗时间




之前遇到内存泄露,程序假死,死锁等情况,都是直接重启了,根本没有去看是什么原因造成,
得到一些定位方式方法之后,
下次再有内存泄露,就得尝试去定位一下先,不必每次直接重启大法。

标签:jstack,回收,幸存,内存,大小,jstat,垃圾
From: https://www.cnblogs.com/aaacarrot/p/17384015.html

相关文章

  • IBM Power 内存缺失问题
     转自:http://blog.chinaunix.net/uid-22759617-id-3456302.html IBMP5小型机内存缺失问题处理方法总结p55A机器有2G的内存无法检测出来。机器型号:9133-55A<1>联系前方找一根网线,一头连接55A小型机后端的HMC1口,一头连接电脑的网口。<2>提示前方打开IE,在IE地址栏输入后回车,......
  • 全新 – Amazon EC2 R6a 实例由第三代 AMD EPYC 处理器提供支持,适用于内存密集型工作
    我们在Amazonre:Invent2021上推出了通用型AmazonEC2 M6a实例,并于今年2月推出了计算密集型 C6a实例。这些实例由运行频率高达3.6GHz的第三代AMDEPYC处理器提供支持,与上一代实例相比,性价比提高多达35%。如今,我们正在扩展产品组合,添加内存优化型 AmazonEC2R6a......
  • ibm power 内存条 顺序 P740 P720 740
            https://www.renrendoc.com/paper/175507929.html......
  • 线程的五种状态 jvm 看100%cpu, 是堆内存还是元空间还是gc的效率过低,
        ......
  • java内存模型&synchronized和volatile在jmm上的区别
    转载:https://www.bilibili.com/video/BV1B24y1T7Qp/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=46d50b5d646b50dcb2a208d3946b1598......
  • .NET EFCode内存溢出事故一次记录
     以下代码导致内存溢出:是一段连表查询导致查询不到的问题varonelst=awaitdbpTasks.Where(Epr).Join(Context.DbpTaskMetadata.AsNoTracking().GroupBy(meta=>meta.Taskid).Select(g=>new{Key=g.Key,Value=g}),src=>src.Taskid,meta=>meta.Key,(src,......
  • jstat使用实用教程
    大概阅读5分钟,本教程非常实用,清晰案例展示,建议收藏查询要监控的java进程号(pid)参考@[toc]jstat简介Jstat位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heapsize和垃圾回收状况的监控。Jstat可以用来监视VM内存内的各种堆和......
  • Linux - 内存回收
    Linux-内存回收内存回收时,会优先释放Inactive(file)中的数据,来满足应用对内存的需求,此时匿名页会增长。匿名页不会被系统直接释放,如果有swap的时候,会把一些inactive(anon)放入swap。如果没有swap,会一直保持在内存中。当然,程序可以通过比如free这些glibc函数,把相关匿名页释放掉,从而释......
  • linux 内核空间内存分布
    虚拟地址空间划分linux通过宏“PAGE_OFFSET”将4GB的虚拟地址空间(32bit平台)划分成内核地址空间和进程地址空间两部分。“PAGE_OFFSET”的值支持通过Kconfig配置,其默认的值是“0xC0000000”。下面以经典的“PAGE_OFFSET=0xC0000000”来看下linux对虚拟地址空间的详细划分。Linux......
  • 特性介绍 | MySQL 测试框架 MTR 系列教程(二):进阶篇 - 内存/线程/代码覆盖率/单元/压力
    作者:卢文双资深数据库内核研发序言:以前对MySQL测试框架MTR的使用,主要集中于SQL正确性验证。近期由于工作需要,深入了解了MTR的方方面面,发现MTR的能力不仅限于此,还支持单元测试、压力测试、代码覆盖率测试、内存错误检测、线程竞争与死锁等功能,因此,本着分享的精神,将其......