来自mallinfo和ps的值不一致

时间:2014-02-06 09:37:38

标签: c++ memory-management

我试图在运行大约20-25个线程的linux应用程序中识别出巨大的内存增长。从其中一个线程我使用系统调用mallinfo转储内存统计信息。它将总分配空间显示为1005025904(uordblks)。但是,top命令显示总内存为8GB,驻留内存为7GB。有人可以解释这种不一致吗?

以下是来自mallinfo的完整统计信息:

Total non-mmapped bytes (arena):       1005035520
 # of free chunks (ordblks):            2
 # of free fastbin blocks (smblks):     0
 # of mapped regions (hblks):           43
Bytes in mapped regions (hblkhd):      15769600
Max. total allocated space (usmblks):  0
Free bytes held in fastbins (fsmblks): 0
Total allocated space (uordblks):      1005025904
Total free space (fordblks):           9616
Topmost releasable block (keepcost):   9584

1 个答案:

答案 0 :(得分:1)

原因是mallinfo给出了主要竞技场的统计数据。要查找所有竞技场的详细信息,您必须使用系统调用malloc_stats。