java 内存分析工具实践

参考此文,在本机实践:https://my.oschina.net/feichexia/blog/196575

jmap   可以用dump 再用jhat 查看使用

jstack  查看堆内存 加-heap 使用   各代内存大小 使用情况    查看各线程状态

jstat 查看各内存的使用情况,eden survior perment 使用/未使用

jprof 查看cpu使用情况

jmap -heap pid


top -Hp pid 查看各线程 


遇到下面的问题:

Exception in thread "main" java.lang.reflect.InvocationTargetException

搜索说是 java程序运行的版本跟jmap版本不一致,也就是我在终端中的java版本是1.7 idea里用的是1.8.把1.8改成了1.7

target需要调整

project structure 里source 的language level 也需要降到7

jmap -heap

jmap -dump

jmap -histo[:live]

查看堆内存使用情况:

lxxxxxxxx-pc:~$ jmap -heap 5362
Attaching to process ID 5362, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.60-b09


using thread-local object allocation.
Parallel GC with 4 thread(s)


Heap Configuration:
   MinHeapFreeRatio = 0
   MaxHeapFreeRatio = 100
   MaxHeapSize      = 3072327680 (2930.0MB)
   NewSize          = 1310720 (1.25MB)
   MaxNewSize       = 17592186044415 MB
   OldSize          = 5439488 (5.1875MB)
   NewRatio         = 2
   SurvivorRatio    = 8
   PermSize         = 21757952 (20.75MB)
   MaxPermSize      = 85983232 (82.0MB)
   G1HeapRegionSize = 0 (0.0MB)


Heap Usage:
PS Young Generation
Eden Space:
   capacity = 48234496 (46.0MB)
   used     = 3873096 (3.6936721801757812MB)
   free     = 44361400 (42.30632781982422MB)
   8.029722130816916% used
From Space:
   capacity = 7864320 (7.5MB)
   used     = 0 (0.0MB)
   free     = 7864320 (7.5MB)
   0.0% used
To Space:
   capacity = 7864320 (7.5MB)
   used     = 0 (0.0MB)
   free     = 7864320 (7.5MB)
   0.0% used
PS Old Generation
   capacity = 127926272 (122.0MB)
   used     = 0 (0.0MB)
   free     = 127926272 (122.0MB)
   0.0% used
PS Perm Generation
   capacity = 22020096 (21.0MB)
   used     = 3648864 (3.479827880859375MB)
   free     = 18371232 (17.520172119140625MB)
   16.570608956473215% used


924 interned Strings occupying 63976 bytes.


查看堆内存中的对象数目(:live 只统计或对象)  对象很多就把少于250的都去掉了 算是个例子

类型对应情况

B  byte
C  char
D  double
F  float
I  int
J  long
Z  boolean
[  数组,如[I表示int[]
[L+类名 其他对象


jmap -histo:live 5497

 num     #instances         #bytes  class name
----------------------------------------------
   1:          7936        1022480  <methodKlass>
   2:          7936         933672  <constMethodKlass>
   3:           553         644480  <constantPoolKlass>
   4:           518         419168  <constantPoolCacheKlass>
   5:           553         379896  <instanceKlassKlass>
   6:          1073         352968  [B
   7:          1806         220088  [C
   8:           630          77176  java.lang.Class
   9:           880          56280  [[I
  10:           854          53072  [S
  11:          1777          42648  java.lang.String
  12:            60          32640  <objArrayKlassKlass>
  13:           407          21904  [Ljava.lang.Object;
  14:           353          14120  java.lang.ref.Finalizer
  15:           200          12800  java.net.URL
  16:           288           9216  java.util.HashMap$Entry
  17:            15           8872  <methodDataKlass>
  18:           113           8136  java.lang.reflect.Field
  19:            91           7280  [Ljava.util.WeakHashMap$Entry;
  20:            83           6640  java.util.jar.JarFile$JarFileEntry
  21:            88           5632  java.util.jar.JarFile
  22:            72           5472  [Ljava.util.HashMap$Entry;
  23:            92           5152  java.util.zip.ZipFile$ZipFileInputStream
  24:            91           5096  java.util.WeakHashMap
  25:            99           4752  sun.misc.URLClassPath$JarLoader
  26:            93           4464  sun.nio.cs.UTF_8$Encoder
  27:            79           4424  java.util.zip.ZipFile$ZipFileInflaterInputStream
  28:             8           4352  <typeArrayKlassKlass>
  29:           108           4320  java.util.LinkedHashMap$Entry
  30:            79           3792  java.util.zip.Inflater
  31:            78           3744  java.util.HashMap
  32:           113           3616  java.util.Hashtable$Entry
  33:           110           3520  java.util.concurrent.ConcurrentHashMap$HashEntry
  34:            98           3136  java.lang.ref.ReferenceQueue
  35:            92           3024  [Ljava.lang.String;
  36:            20           2880  [I
  37:            88           2816  java.util.zip.ZipCoder
  38:            65           2600  java.util.concurrent.ConcurrentHashMap$Segment
  39:           104           2496  java.io.ExpiringCache$Entry
  40:            11           2288  <klassKlass>
  41:            88           2112  java.util.ArrayDeque
  42:            65  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值