繁体   English   中英

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

[英]jvm free memory space is getting smaller

在此处输入图片说明

我使用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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM