我发现我的一个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 Hero和Eclipse Memory Analyzer Tool。在他们两个中,我发现了以下内容:
1.总浪费内存为:64.69MB (73%)(查看下面的截图)
2 . 其中,34.06MB 被Byte [] array和LinkedHashmap[](检查下面的截图)占用,我从未在我的整个项目中使用过。我在我的项目中搜索了它,但没有找到。
3 . 以下 2 个大对象分别占用 32 MB 和 20 MB。
1. Java Static …Run Code Online (Sandbox Code Playgroud)