Java 中的 HeapDump 和内存泄漏

问题描述 投票:0回答:1

我们有一个在 Open Shift 中运行的 Spring Boot 应用程序,其中 pod 内存约为 3 GB 到 4 GB。

最近 Spring Boot 项目中添加了一个新进程,内存使用量现在约为 8 GB,有时会达到 13 GB。

我使用 ../actuator/heapdump 下载了一个 heapdump 文件,它(手动)执行了 gc,并清除了内存中的垃圾,使其大小约为 3 GB。

我在 VisualVM 中打开堆转储,我注意到有很多按降序排列的支配者,如类加载器、哈希图、对象映射器等。

用Java编写哈希图的正确方法是什么? ...!! 如何配置 gc 以使其满足所有未使用/未链接的对象?

在此输入图片描述

谢谢。

java memory hashmap classloader objectmapper
1个回答
0
投票

我不熟悉你所使用的具体流程和架构,所以我不会对此发表评论。然而,我在我们的一个应用程序中遇到了类似的问题。

从执行器/堆转储端点下载堆转储时,我注意到内存显着减少。结论是垃圾收集器没有足够的时间来清除未使用的对象。

作为解决方案,我添加了以下 JVM 参数,问题得到了解决。从那以后我就没有遇到任何堆转储问题。我建议使用这些参数:

XX:InitiatingHeapOccupancyPercent=60 -XX:MaxGCPauseMillis=10000 -Xms2G -Xmx4G

您可以参考此链接了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.