【java】jmap -histo pid 输出的[B 占用很高,请问问题会在哪里?

公司目前的程序是解析excel表格内容,使用到了poi sax方式解析,但是在监控的过程中发现堆内存B的占用非常高,使用mat工具也告诉B可能存在内存泄漏问题。
代码中那些操作会导致这个问题呢?代码中只使用了一个inputstream来保存文件,而且使用后也关闭了

是在找不到,但是B占了相当多的空间

b就是byte数据(下面这个不是我的图,是我找的一个例图,就是B那个地方,我这里显示的是占用最高的,我不知道我的程序哪里写错了会导致这种情况)

  num     #instances         #bytes  class name

----------------------------------------------

   1:       1169837      131659368  [C

   2:         25945       38337824  [I

   3:         31548       29407968  [B

   4:       1164546       27949104  java.lang.String

   6:         91313       12829072  <constMethodKlass>

   7:         12395       12404880  [S

   8:         91313       11700288  <methodKlass>

   9:          7525        9303112  <constantPoolKlass>

  10:          7525        5606808  <instanceKlassKlass>

  11:          6043        5028288  <constantPoolCacheKlass>

  12:         10048        2007888  [Ljava.lang.Object;

  14:          3507        1707048  <methodDataKlass>

  15:          8132         980616  java.lang.Class

  16:         26854         859328  java.util.HashMap$Entry

  17:         12368         699296  [[I

  18:         14135         452320  java.util.concurrent.ConcurrentHashMap$HashEntry

  19:         20883         334128  java.lang.Object

  20:           590         316240  <objArrayKlassKlass>

  21:          1757         305904  [Ljava.util.HashMap$Entry;

  22:          2809         224720  net.sf.ehcache.Element

  23:          1992         223104  java.net.SocksSocketImpl

  24:          2668         213440  java.lang.reflect.Method

  26:          5932         183928  [Ljava.lang.String;

  27:          7588         182112  java.util.concurrent.ConcurrentSkipListMap$Node

  28:          7317         175608  java.lang.Long

  29:          5303         169696  java.util.Hashtable$Entry

  30:          6778         162672  java.util.ArrayList

  31:          3931         157240  java.lang.ref.SoftReference

  32:          2972         118880  java.util.LinkedHashMap$Entry

  33:          1565         112680  org.apache.commons.pool2.impl.DefaultPooledObject

  34:          2817         112680  net.sf.ehcache.store.chm.SelectableConcurrentHashMap$HashEntry

  35:          2243         107664  java.util.HashMap

  36:          2592         103680  java.util.TreeMap$Entry

  37:          3214         102848  java.lang.ref.WeakReference

  38:          1565         100160  redis.clients.jedis.Client

  39:          4155          99720  java.util.LinkedList$Node

  40:          1986          95328  java.net.SocketInputStream

  41:           414          92952  [Ljava.util.concurrent.ConcurrentHashMap$HashEntry;

  42:          2275          91000  java.lang.ref.Finalizer

  43:          1161          83592  java.lang.reflect.Constructor

  44:           757          78728  java.io.ObjectStreamClass

  45:          1587          76176  java.net.SocketOutputStream

  46:          1189          66584  java.beans.MethodDescriptor

  47:          2770          66480  org.apache.commons.pool2.impl.LinkedBlockingDeque$Node

  48:           388          66368  [Ljava.util.Hashtable$Entry;

  49:          1989          63648  java.net.Socket

  50:           749          53928  java.lang.reflect.Field

  ...

  ...

2947:             1             16  sun.misc.Launcher

2948:             1             16  org.codehaus.jackson.map.ser.std.DateSerializer

2949:             1             16  org.apache.phoenix.schema.types.PDataType$2

2950:             1             16  org.springframework.data.redis.connection.convert.StringToRedisClientInfoConverter

Total       3090439      316004152

1个回答

这玩意本来就很消耗内存

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问