gpt4 book ai didi

java - 了解 *nix 中的 RES 内存并调试内存泄漏

转载 作者:太空宇宙 更新时间:2023-11-04 03:44:55 27 4
gpt4 key购买 nike

回复:Possible native memory release error in Java

我注意到 RES 内存显示的内存可能比您的应用程序实际分配的内存多得多。在上面的示例中,有很多 alloc/dealloc 命令,但 RES 内存卡在很高的数字上。我知道这不是 JIT 或其他内存进程的结果,因为通常您可以分配和释放 500M 并观察 RES 在正常情况下完美地上下波动。

jon@ubuntu-dev:~$ top -d 1 -p 31067 | grep java
31067 jon 20 0 6847648 27988 15420 S 0.0 0.2 0:00.09 java
31067 jon 20 0 7769264 743952 15548 S 315.5 4.6 0:03.25 java
31067 jon 20 0 7900336 847868 15548 S 380.1 5.3 0:07.06 java
31067 jon 20 0 7834800 810324 15548 S 379.1 5.0 0:10.86 java
31067 jon 20 0 7703728 700028 15548 S 379.2 4.3 0:14.66 java
31067 jon 20 0 7900336 894940 15548 S 379.2 5.5 0:18.46 java
31067 jon 20 0 7703728 674400 15548 S 277.5 4.2 0:21.24 java
31067 jon 20 0 7376048 430868 15548 S 59.9 2.7 0:21.84 java
31067 jon 20 0 7376048 430868 15548 S 0.0 2.7 0:21.84 java
31067 jon 20 0 7376048 430868 15548 S 1.0 2.7 0:21.85 java
31067 jon 20 0 7376048 430868 15548 S 0.0 2.7 0:21.85 java
31067 jon 20 0 7376048 430868 15548 S 1.0 2.7 0:21.86 java

这里的应用程序没有占用那么多内存。 Java 表示提交大小为 35MB, native 内存大小为 0。

如果这一切都是真的,那么如果应用程序不消耗系统上的所有内存,我们到底应该如何准确检测应用程序中的内存泄漏?

最佳答案

检查“共享”列是否可能包含较大的值?如果是这样,您的 RES 内存可能是由于 memory-mapped files 。这是一种有效访问大型数据集的机制,可能会被某些库内部使用。

关于java - 了解 *nix 中的 RES 内存并调试内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28527494/

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