java内存监控(上)

文章目录

一,jps

jps命令选项如下:
-q 可以输出进程id
-m 输出传入main方法的参数
-l 输出main类或Jar的全限名
-v 输出传入JVM的参数
实例:

C:\Users\WWH>jps -q
18000
6288
2780
//运行了一个main方法后输出结果如下:
C:\Users\WWH>jps -q
18000
6288
6848
11460

C:\Users\WWH>jps -m
18000 Test
6288
8224 Jps -m
11460 Test

C:\Users\WWH>jps -l
18000 test.Test
3952 sun.tools.jps.Jps
6288
11460 test.Test

C:\Users\WWH>jps -v
18000 Test -Dfile.encoding=UTF-8
6288  -Dosgi.requiredJavaVersion=1.8 -Dosgi.instance.area.default=@user.home/eclipse-workspace -XX:+UseG1GC -XX:+UseStringDeduplication -Dosgi.requiredJavaVersion=1.8 -Xms256m -Xmx1024m

二,jmap

1,-heap 打印Java堆概要信息,包括使用的GC算法、堆配置参数和各代中堆内存使用情况;
选择运行一个main方法的Test进程的id运行:

C:\Users\WWH>jmap -heap 18000
Attaching to process ID 18000, please wait...
Debugger attached successfully.
Client compiler detected.
JVM version is 25.131-b11

using thread-local object allocation.
Mark Sweep Compact GC

Heap Configuration:
   MinHeapFreeRatio         = 40
   MaxHeapFreeRatio         = 70
   MaxHeapSize              = 268435456 (256.0MB)
   NewSize                  = 5570560 (5.3125MB)
   MaxNewSize               = 89456640 (85.3125MB)
   OldSize                  = 11206656 (10.6875MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 12582912 (12.0MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 4294901760 (4095.9375MB)
   G1HeapRegionSize         = 0 (0.0MB)

Heap Usage:
New Generation (Eden + 1 Survivor Space):
   capacity = 5046272 (4.8125MB)
   used     = 906416 (0.8644256591796875MB)
   free     = 4139856 (3.9480743408203125MB)
   17.962091619318183% used
Eden Space:
   capacity = 4521984 (4.3125MB)
   used     = 906416 (0.8644256591796875MB)
   free     = 3615568 (3.4480743408203125MB)
   20.044652966485508% used
From Space:
   capacity = 524288 (0.5MB)
   used     = 0 (0.0MB)
   free     = 524288 (0.5MB)
   0.0% used
To Space:
   capacity = 524288 (0.5MB)
   used     = 0 (0.0MB)
   free     = 524288 (0.5MB)
   0.0% used
tenured generation:
   capacity = 11206656 (10.6875MB)
   used     = 0 (0.0MB)
   free     = 11206656 (10.6875MB)
   0.0% used

1619 interned Strings occupying 129048 bytes.

2,-histo[:live] 打印Java堆中对象直方图,通过该图可以获取每个class的对象数目,占用内存大小和类全名信息,带上:live,则只统计活着的对象,如下命令:


 num     #instances         #bytes  class name
----------------------------------------------
   1:          2302         303296  [C
   2:           505          49472  java.lang.Class
   3:          2160          34560  java.lang.String
   4:           536          29224  [Ljava.lang.Object;
   5:           840          26880  java.util.TreeMap$Entry
   6:            15          25072  [B
   7:           196           7328  [Ljava.lang.String;
   8:            82           5248  java.net.URL
   9:            79           5056  java.lang.reflect.Field
  10:           256           4096  java.lang.Integer
  11:            93           3616  [I
  12:            97           3104  java.lang.ref.SoftReference
  13:           113           2712  java.util.Hashtable$Entry
  14:           103           2472  java.util.HashMap$Node
  15:             5           1880  java.lang.Thread
  16:            13           1808  [Ljava.util.HashMap$Node;
  17:            48           1536  java.util.LinkedHashMap$Entry
  18:            38           1520  sun.util.locale.LocaleObjectCache$CacheEntry
  19:            30           1440  sun.misc.URLClassPath$JarLoader
  20:            18           1296  java.lang.reflect.Constructor
  21:            48           1152  java.io.ExpiringCache$Entry
  22:            45           1080  java.util.concurrent.ConcurrentHashMap$Node
  23:             2           1064  [Ljava.lang.invoke.MethodHandle;
  24:             1           1040  [Ljava.lang.Integer;
  25:             1           1040  [[C
  26:             6            960  [Ljava.util.Hashtable$Entry;
  27:            18            864  java.lang.Class$ReflectionData
  28:            26            832  java.io.ObjectStreamField
  29:             9            720  [Ljava.util.WeakHashMap$Entry;
  30:            17            680  java.util.HashMap
  31:             8            640  [S
  32:            19            608  sun.util.locale.BaseLocale
  33:            19            608  sun.util.locale.BaseLocale$Key
  34:             5            528  [Ljava.util.concurrent.ConcurrentHashMap$Node;
  35:            15            480  java.lang.ref.Finalizer
  ..........

3,-finalizerinfo 打印等待回收的对象信息,如下命令:

C:\Users\WWH>jmap  -finalizerinfo 18000
Attaching to process ID 18000, please wait...
Debugger attached successfully.
Client compiler detected.
JVM version is 25.131-b11
Number of objects pending for finalization: 0

Number of objects pending for finalization: 0 说明当前F-QUEUE队列中并没有等待Fializer线程执行finalizer方法的对象。

4,-dump: 以hprof二进制格式将Java堆信息输出到文件内,该文件可以用MAT、VisualVM或jhat等工具查看;
dump-options选项:
live 只输出活着的对象;不指定,则输出堆中所有对象
format=b 指定输出格式为二进制
file= 指定文件名及文件存储位置,例如:jmap -dump:live,format=b,file=D:\heap.bin
-F 与-dump: 或-histo一起使用,当没有响应时,强制执行;
运行如下:

C:\Users\WWH>jmap -dump:live,format=b,file=G:\heap.bin 18000
Dumping heap to G:\heap.bin ...
Heap dump file created
  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值