繁体   English   中英

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

[英]Understanding RES memory in *nix and debugging memory leaks

RE: 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,本机内存大小为0。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM