jvm的可用内存空间越来越小

时间:2018-09-28 08:28:21

标签: java memory jvm zabbix

enter image description here

我使用zabbix监视jvm的可用内存空间。他的空间在不断缩小。这可能是什么原因造成的?我怀疑这是内存溢出。有什么办法可以检查出来吗?有人可以帮我吗?

更新

重新启动jvm之后,我执行了命令jmap -histo:live。这里的初始化有问题吗?

num     #instances         #bytes  class name
----------------------------------------------
   1:        192100       28118472  [C
   2:         10757       10132704  [B
   3:        101676        8947488  java.lang.reflect.Method
   4:        165148        5284736  java.util.concurrent.ConcurrentHashMap$Node
   5:        187677        4504248  java.lang.String
   6:         19509        3519904  [I
   7:         62802        3014496  org.aspectj.weaver.reflect.ShadowMatchImpl
   8:         57683        2307320  java.util.LinkedHashMap$Entry
   9:         18410        2044672  java.lang.Class
  10:         40274        2016656  [Ljava.lang.Object;
  11:         62801        2009632  org.aspectj.weaver.patterns.ExposedState
  12:         59849        1915168  java.lang.ref.WeakReference
  13:          1342        1774328  [Ljava.util.concurrent.ConcurrentHashMap$Node;
  14:         22572        1753560  [Ljava.util.HashMap$Node;
  15:           920        1576512  [Ljava.nio.ByteBuffer;
  16:         47884        1532288  java.util.HashMap$Node
  17:         26167        1465352  java.util.LinkedHashMap
  18:         10874        1391872  org.aspectj.weaver.reflect.ReflectionBasedResolvedMemberImpl
  19:         49720        1085320  [Ljava.lang.Class;
  20:         45193        1084632  java.util.ArrayList
  21:         13421         966312  java.lang.reflect.Field
  22:         54885         878160  java.lang.Object
  23:         16797         806256  java.util.HashMap
  24:         19297         771880  java.lang.ref.SoftReference
  25:         23315         559560  java.beans.MethodRef
  26:         17695         530192  [Ljava.lang.String;
  27:          6508         520640  java.lang.reflect.Constructor
  28:          8305         465080  java.beans.MethodDescriptor
  29:         23607         459008  [Lorg.aspectj.weaver.ResolvedType;
  30:         17430         418320  org.springframework.core.MethodClassKey

1 个答案:

答案 0 :(得分:0)

这看起来像Java应用程序的非常正常的内存使用情况图。正如其中一项评论所指出的那样,JVM在09:00运行了垃圾回收器,这导致释放了大量内存。您没有提供用于启动JVM的参数,因此尚不清楚堆的大小(猜测我会说2Gb)。 GC后将可用空间恢复到1.5Gb很好。随后,可用空间的缓慢减少是您的应用程序分配对象以执行其所需的任何操作。我的猜测还可能是,如果您显示应用程序的图形运行时间更长,则当GC再次运行时,还会出现另一个峰值。

这么短的答案就是这应该是JVM要做的。如果应用程序继续运行(即您没有收到OutOfMemoryError),那么一切都很好。