如果 Linux 缓存消耗了整个系统的可用内存,Java 应用程序响应会很慢

如果 Linux 缓存消耗了整个系统的可用内存,Java 应用程序响应会很慢

我在拥有 32GB RAM 和 16 核 CPU 的服务器上运行两个基于 Java 的应用程序。除此之外,我只有 MySQL 社区服务器 5.6.16。Java 应用程序分配了 10 GB 的总内存。两个应用程序的 Xmx 和 Xms 相同。

现在的问题是,在一段时间内(大约 3-4 小时),Linux 将整个可用内存分配给缓存,Java 应用程序的速度急剧下降。一旦我清除缓存,应用程序就会开始正常响应。

以下是 free 命令的输出:

$ free -m
             total       used       free     shared    buffers     cached
Mem:         32095      31767        328          0       1380      11245
-/+ buffers/cache:      19141      12953
Swap:        29999       3918      26081

两个 Java 应用程序的堆+非堆内存利用率在任何时候都不会超过 75%。

这背后的原因是什么?这是 Linux 内存管理问题吗?

提前致谢

相关内容