4

真的找不到太多关于这个..希望有人可以提供帮助。我正在后台处理一个 100GB 的 Java 堆作为大数据缓存。为了避免与文件系统缓存之类的冲突,并且因为它总体上表现更好,我将其分配在大页面中。

我保留了 51,200 x 2MB 的大页面,一切正常。但是,当我终止进程并重新启动时,Linux 似乎将其中一些页面保留为“rsvd”。

# less /proc/meminfo | grep Hug
AnonHugePages:         0 kB
HugePages_Total:   52000
HugePages_Free:    50952
HugePages_Rsvd:     1634
HugePages_Surp:        0
Hugepagesize:       2048 kB

据我所知,系统上没有其他任何东西被配置为请求或保留这些页面。Linux 是否为我提供了一种方法来查看是什么保留了这些保留和/或使该保留无效?

从我发现谷歌的所有内容来看,它们实际上并没有被使用,只是 Linux 将它们保留起来,但有趣的是,在重新启动我的巨大 JVM 时不允许我使用它们。

任何帮助都会很棒。

4

1 回答 1

0

您很可能让 Java 重新使用仍在内存中的对象,但是,运行以下命令将删除该对象以及其他所有内容也已存储且未使用

echo 3 | sudo tee /proc/sys/vm/drop_caches 

但你并不真的需要 - 虽然它不是真的被“采取”。只要有任何实际需要的东西,ram linux就会把它还给它

欲了解更多信息,请查看http://www.linuxatemyram.com/

你实际上不需要做任何正常的事情。您真正需要担心的唯一内存是应用程序运行时的内存

于 2013-06-25T22:26:50.023 回答