jvm 命令和工具

目录

堆内存分析工具

MAT

ZProfiler - 线上的mat

EagleEye-MProf - 命令行

命令行

线程池排查

jstack 

jmap -dump

jmap -heap

 jstat


堆内存分析工具

MAT

eclipse官方推出的本地内存分析工具,运行需要大量内存,从使用角度来讲,并不方便。我现在已经很少使用。

JProfiler 

 

jvm 命令和工具_第1张图片

ZProfiler - 线上的mat

阿里中间件出品的在线堆内存分析工具,链接是:http://zprofiler.alibaba-inc.com,不需要拷贝镜像文件,直接在线分析。

Grace 是一款开源用于解决应用程序中出现的常见问题的软件,其开源版本为Jifa,前身为Zprofiler。

阿里巴巴加入 Eclipse 基金会,开源一站式 Java 应用诊断平台 -- Eclipse Jifa-阿里云开发者社区

EagleEye-MProf - 命令行

也是阿里中间件团队推出的,适用于复杂云环境的轻量级java堆内存分析工具,非常好用。在公共云或者专有云的机器上,运行的是客户的机器。由于权限或者网络的关系,我们很难去执行jmap进行heap dump,或者scp上传dump文件。这个工具可以直接在ECS上分析,而不用下载dump文件。

jhat 

命令行

jmap , jstack  ,jstat

线程池排查

Linux下查看消耗CPU的线程 占用 100% java jvm 堆栈_linux查看栈使用率_个人渣记录仅为自己搜索用的博客-CSDN博客

jstack 

jmap -dump

jmap -dump:format=b,file=heap.bin 1234

  oom自动堆保存 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=c:\test.hprof

分析 Heap Dump 的工具都可以获取 Heap Dump 文件。
比如:jdk 自带的工具 jvisualvm。
其它工具:Eclipse memory analyzer(jmat)、JProfiler 等。

jhat 分析 使用jhat分析jmap生成的dump转储快照_jmap 导出某个线程_一点光辉的博客-CSDN博客

jmap -heap

$ jmap -heap 108920

$ jmap -heap 108920
Attaching to process ID 108920, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.242-b716

using parallel threads in the new generation.
using thread-local object allocation.
Concurrent Mark-Sweep GC

Heap Configuration:
   MinHeapFreeRatio         = 40
   MaxHeapFreeRatio         = 70
   MaxHeapSize              = 3984588800 (3800.0MB)
   NewSize                  = 1572864000 (1500.0MB)
   MaxNewSize               = 1572864000 (1500.0MB)
   OldSize                  = 2411724800 (2300.0MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 536870912 (512.0MB)
   CompressedClassSpaceSize = 528482304 (504.0MB)
   MaxMetaspaceSize         = 536870912 (512.0MB)
   G1HeapRegionSize         = 0 (0.0MB)

Heap Usage:
New Generation (Eden + 1 Survivor Space):
   capacity = 1415577600 (1350.0MB)
   used     = 1320560416 (1259.3845520019531MB)
   free     = 95017184 (90.61544799804688MB)
   93.28774459273727% used
Eden Space:
   capacity = 1258291200 (1200.0MB)
   used     = 1258291200 (1200.0MB)
   free     = 0 (0.0MB)
   100.0% used
From Space:
   capacity = 157286400 (150.0MB)
   used     = 62269216 (59.384552001953125MB)
   free     = 95017184 (90.61544799804688MB)
   39.589701334635414% used
To Space:
   capacity = 157286400 (150.0MB)
   used     = 0 (0.0MB)
   free     = 157286400 (150.0MB)
   0.0% used
concurrent mark-sweep generation:
   capacity = 2411724800 (2300.0MB)
   used     = 2411723936 (2299.9991760253906MB)
   free     = 864 (8.23974609375E-4MB)
   99.99996417501698% used

88407 interned Strings occupying 10045576 bytes.

jvm 命令和工具_第2张图片

 jstat

jstat -gcold 命令可以用来查看 JVM 老年代的使用情况。jstat -gcold 命令输出的每个字段的含义如下:

  • S0C:Survivor 区 0 当前使用容量(KB)。
  • S1C:Survivor 区 1 当前使用容量(KB)。
  • S0U:Survivor 区 0 使用后的容量(KB)。
  • S1U:Survivor 区 1 使用后的容量(KB)。
  • EC:Eden 区当前使用容量(KB)。
  • EU:Eden 区使用后的容量(KB)。
  • OC:老年代当前使用容量(KB)。
  • OU:老年代使用后的容量(KB)。
  • PC:永久代当前使用容量(KB)。
  • PU:永久代使用后的容量(KB)。
  • YGC:从应用程序启动到采样时发生的 Young GC 次数。
  • YGCT:从应用程序启动到采样时 Young GC 所用的时间(秒)。
  • FGC:从应用程序启动到采样时发生的 Full GC 次数。
  • FGCT:从应用程序启动到采样时 Full GC 所用的时间(秒)。
  • GCT:从应用程序启动到采样时所有 GC 所用的时间(秒)。

其中,S0C、S1C、EC 和 OC 分别表示 Survivor 区、Eden 区和老年代的当前使用容量,S0U、S1U、EU 和 OU 分别表示 Survivor 区、Eden 区和老年代使用后的容量,YGC 和 FGC 分别表示 Young GC 和 Full GC 的次数,YGCT 和 FGCT 分别表示 Young GC 和 Full GC 所用的时间,GCT 表示所有 GC 所用的时间。

你可能感兴趣的:(jvm,java,开发语言)