Scala 和进程中的内存泄漏
2022-09-04 04:41:22
我在Scala中有一个系统,有很多并发线程和系统调用。此系统存在一些问题,因为内存使用量随着时间的推移而增加。
下面的图像显示了一天的内存使用情况。当它达到极限时,该过程关闭,我放了一只看门狗再次恢复它。
我定期运行该命令
jcmd <pid> GC.run
这使得内存增长缓慢,但泄漏仍然发生。
我用jvisualvm进行了分析,比较了不同的时刻,40分钟的增量。下面的图像显示了这两个时刻之间的比较。请注意,包中某些类(如 、 、 和 ) 和许多类的实例有所增加。ConcurrentHashMap$HashEntry
SNode
WeakReference
char[]
String
scala.collection.concurrent
什么可能导致内存泄漏?
编辑1:调查JVisualVM,我注意到TryMap中的CNode和INode类的对象,这些类在sbt中实例化。TrapExit$App 类。下面是对象层次结构图: