gpt4 book ai didi

c# - 检测何时即将耗尽内存(获取 "free physical memory"的数量)

转载 作者:IT王子 更新时间:2023-10-28 23:38:45 26 4
gpt4 key购买 nike

我正在将图像从高 FPS 相机传输到内存缓冲区(列表)中,由于这些图像非常大,计算机很快就会耗尽内存。

我想做的是在应用程序耗尽内存之前停止传输。在我的测试中,我发现它与接近于零的“可用物理内存”指标一致。

现在的问题是我无法找到以编程方式实际获取此值的方法;在 XP 中,它甚至不会显示在任何地方(仅在 Vista/7 任务管理器中)。

alt text

我已经尝试了所有我能找到的方法(WMI、性能计数器、MemoryStatus ......),但我从中得到的只是“可用物理内存”,这当然不一样。

有什么想法吗?

更新不幸的是,我需要将数据放在内存中(是的,我知道我不能保证它会在物理内存中,但仍然如此),因为数据是实时流式传输的,我需要保存后在内存中预览。

最佳答案

相关性不是因果关系。即使 物理 内存负载仍然可用,您也可能“内存不足”。物理内存几乎可以肯定是无关紧要的。您可能用完的是地址空间

人们倾向于将“内存”视为占用芯片上的空间,但十多年来并非如此。现代操作系统中的内存通常更好地被认为是一个大磁盘文件,它上面有一个大的硬件缓存来加速它。 物理内存只是基于磁盘的内存的性能优化

如果你的物理内存用完了,那么你的表现将会很糟糕。但稀缺资源实际上是您即将用完的地址空间。一个大列表必须有一个大的连续地址空间 block ,并且可能没有任何足够大的 block 以您想要的大小。

不要那样做。拉下一个合理大小的 block ,将其转储到磁盘,然后根据需要处理磁盘上的文件。

关于c# - 检测何时即将耗尽内存(获取 "free physical memory"的数量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4478216/

26 4 0