Java进程使用了3.2GB的内存,但堆只使用了1053MB,我想知道如何解决这个问题。

12 浏览
0 Comments

Java进程使用了3.2GB的内存,但堆只使用了1053MB,我想知道如何解决这个问题。

我想要检查后端的健康状况,所以我使用线程池启动一个线程来每10秒检查一次后端。在这个过程中,每10秒会查询MySQL 6次,并且不使用数据库连接池。\n当我在云平台上部署这个应用时,我收到了内存使用持续增长的消息。\n点击此处查看图片描述\n首先,我使用top命令观察Java堆的使用情况。\n从这张图片中,我发现这个应用使用了大约3.2GB的内存。\n点击此处查看图片描述\n然后,我执行了jmap -heap 9,但是我发现堆内存的使用量只有1053MB。\n点击此处查看图片描述\n我猜测这个问题的原因可能是线程的数量。我执行了pstree -p | grep java | wc -l。我发现只有70个线程。\n点击此处查看图片描述\n最后,我执行了jcmd 9 VM.native_memory scale=MB。我看到堆内存的使用量是4096MB。这让我感到困惑。\n点击此处查看图片描述\n我想要减少这个应用的内存使用量,但是我不知道该如何解决这个问题。

0