gpt4 book ai didi

java - Scala 和进程中的内存泄漏

转载 作者:IT王子 更新时间:2023-10-28 23:31:55 24 4
gpt4 key购买 nike

我在 Scala 中有一个系统,有很多并发线程和系统调用。这个系统有一些问题,因为内存使用量随着时间的推移而增加。

下图显示了一天的内存使用情况。当它达到极限时,进程关闭,我放了一个看门狗再次恢复它。 inserir a descrição da imagem aqui

我会定期运行命令

jcmd <pid> GC.run

这使得内存增长缓慢,但泄漏仍然发生。

我使用 jvisualvm 进行了分析,比较了不同的时间点,增量为 40 分钟。下图显示了这两个时刻之间的比较。请注意,某些类的实例有所增加,例如 ConcurrentHashMap$HashEntrySNodeWeakReferencechar[]String 以及包 scala.collection.concurrent 中的许多类。

memory leaked ojects

什么可能导致内存泄漏?

编辑 1:调查 JVisualVM,我注意到 TriedMap 中的 CNode 和 INode 类的对象,它们在 sbt.TrapExit$App 类中实例化。这是对象层次结构图:

object hierarchy

最佳答案

当您的应用程序由于内存不足问题而崩溃时,首先捕获堆转储。启动jvm时添加以下标志

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dump

接下来您需要分析堆转储以找出内存泄漏的来源。我推荐使用 Eclipse MAT . Leak Suspects报告应该让您了解哪些对象实际上导致了泄漏。

关于java - Scala 和进程中的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25834981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com