我的一个与原生dll交互的.NET进程正在抛出OutOfMemory异常。以下是!vmstat命令
> TYPE MINIMUM MAXIMUM AVERAGE BLK COUNT TOTAL
~~~~ ~~~~~~~ ~~~~~~~ ~~~~~~~ ~~~~~~~~~ ~~~~~
Free:
Small 4K 64K 57K 4,545 262,979K
Medium 68K 960K 425K 240 102,000K
Large 1,084K 1,084K 1,084K 4 4,336K
Summary 4K 1,084K 77K 4,789 369,318K
Reserve:
Small 4K 60K 6K 515 3,255K
Medium 72K 1,012K 982K 863 848,287K
Large 1,864K 15,756K 7,801K 11 85,819K
Summary 4K 15,756K 674K 1,389 937,363K
Commit:
Small 4K 64K 6K 8,762 55,669K
Medium 68K 1,024K 436K 455 198,651K
Large 1,028K 21,168K 4,702K 114 536,079K
Summary 4K 21,168K 84K 9,331 790,401K
**Private:**
Small 4K 64K 6K 3,267 22,087K
Medium 68K 1,024K 945K 1,008 953,539K
Large 1,864K 19,008K 6,245K 52 324,775K
**Summary 4K 19,008K 300K 4,327 1,300,402K**
Mapped:
Small 4K 64K 4K 4,190 18,728K
Medium 68K 1,004K 498K 21 10,467K
Large 1,028K 11,536K 4,443K 10 44,435K
Summary 4K 11,536K 17K 4,221 73,632K
Image:
Small 4K 64K 9K 1,820 18,107K
Medium 68K 980K 286K 289 82,931K
Large 1,032K 21,168K 4,010K 63 252,687K
Summary 4K 21,168K 162K 2,172 353,726K
正如您所见,私有摘要总计为1.3GB。私人意味着什么?它是指本机内存还是托管内存区域?任何描述链接都会有所帮助。
答案 0 :(得分:1)
“Private Bytes”是由此进程分配的内存,无法与其他进程共享。 (在.NET应用程序中,这将包括本机分配和托管堆。)
This SO answer可以很好地描述记忆的不同“类型”。