【发布时间】:2012-12-24 07:36:18
【问题描述】:
有没有办法仅使用托管代码在 C# 中获取剩余的空闲堆栈/堆内存?
具体来说,我不是指在当前分配状态下仍然可用的内存,而是指(将来)可以根据主机系统的主内存分配(如果需要)的所有内存。
这些信息将用于对可用内存不足的系统采取措施,以防止系统内存耗尽。
【问题讨论】:
-
回答“我要多久才能到达 OOME?”将根据您尝试进行的分配大小而有所不同。内存保留在连续的块中,这意味着您可能只能保留比可用总数少得多的内存,尤其是在分配大型数组或类似的情况下。
-
感谢您指出这一点!为了让我的问题更清楚:我只需要一个粗略的可用内存近似值,例如确定 300MB 的内存是否仍然可用(大约 100MB 的精度就足够了)。
-
旁注:取决于您是否对连续块感兴趣,您可能需要做的不仅仅是可用空间的大小(请参阅我的回答)。