相关疑难解决方法(0)

Java 堆转储:如何通过 1. io.netty.buffer.ByteBufUtil 2. byte[] 数组查找占用内存的对象/类

我发现我的一个spring boot项目的内存(RAM消耗)一天天增加。当我将 jar 文件上传到 AWS 服务器时,它占用了 582 MB 的 RAM(最大分配的 RAM 为 1500 MB),但每天,RAM 增加 50MB 到 100 MB,而今天 5 天后,占用了 835 MB . 现在该项目有 100-150 个用户,并且正常使用 Rest API。

由于 RAM 的增加,有几次应用程序出现以下错误(从日志中发现的错误):

Exception in thread "http-nio-3384-ClientPoller" java.lang.OutOfMemoryError: Java heap space
Run Code Online (Sandbox Code Playgroud)

所以为了解决这个问题,我发现通过使用 JAVA Heap Dump,我可以找到占用内存的对象/类。因此,通过Jmap在命令行中使用,我创建了一个堆转储并将其上传到Heap HeroEclipse Memory Analyzer Tool。在他们两个中,我发现了以下内容:

1.总浪费内存为:64.69MB (73%)(查看下面的截图)

在此处输入图片说明

2 . 其中,34.06MB 被Byte [] arrayLinkedHashmap[](检查下面的截图)占用,我从未在我的整个项目中使用过。我在我的项目中搜索了它,但没有找到。

在此处输入图片说明 3 . 以下 2 个大对象分别占用 32 MB 和 20 MB。

1. Java Static …
Run Code Online (Sandbox Code Playgroud)

java out-of-memory heap-dump spring-boot java-heap

8
推荐指数
1
解决办法
182
查看次数

标签 统计

heap-dump ×1

java ×1

java-heap ×1

out-of-memory ×1

spring-boot ×1