gpt4 book ai didi

java - 退出 java (Grails) 应用程序后, "used"内存未释放

转载 作者:行者123 更新时间:2023-12-02 07:36:18 25 4
gpt4 key购买 nike

在 Xen VPS 中使用 Linux 3.2.0-24-virtual #37-Ubuntu SMP Wed Apr 25 12:51:49 UTC 2012 i686 i686 i386 GNU/Linux

在运行 Grails java 应用程序之前,运行 free -m 表示:

             total       used       free     shared    buffers     cached
Mem: 4031 155 3875 0 30 87
-/+ buffers/cache: 37 3994
Swap: 8191 0 8191

运行 Grails 应用程序、执行一些内存密集型处理并通过 Ctrl-C 退出后,它指示:

             total       used       free     shared    buffers     cached
Mem: 4031 1031 2999 0 33 957
-/+ buffers/cache: 40 3991
Swap: 8191 0 8191

在重新启动之前,这似乎不会改变。 topps aux 并不表示任何内存使用量过大。 Grails 应用程序是我在这台计算机上运行的唯一应用程序。

也许我误解了这一点,但我担心退出后内存似乎并没有被释放。通常我会怀疑内存泄漏,但是一旦 java 应用程序终止,这怎么可能呢?

最佳答案

您实际上误解了命令的输出。

Mem 行显示内核当前分配了多少内存;然而,内核会延迟释放内存。如果没有其他进程请求内存,它可能会保留分配的页面(可能是从磁盘读取的内容)。

您看到“干净”的已用/可用内存的行是 -/+ buffers/cache 行,您可以在其中看到内存使用情况大致相同。

您可以在网上找到一些更详细的解释,例如here .

关于java - 退出 java (Grails) 应用程序后, "used"内存未释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12190846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com