我试图在运行大约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
答案 0 :(得分:1)
原因是mallinfo给出了主要竞技场的统计数据。要查找所有竞技场的详细信息,您必须使用系统调用malloc_stats。