【发布时间】:2018-08-06 16:05:08
【问题描述】:
我的 C# 应用程序正在将文件中的图像缓存到 RAM 中,以便它可以更快地向用户显示 (30-60 FPS)。
它们被存储在Bitmap 对象中。
大约 200 张图片后,它会抛出 "System.OutOfMemoryException"。
我尝试过使用
System.Diagnostics.PerformanceCounter("Memory", "Available MBytes");
查看上限是多少并尝试保持在上限之下,但它返回的值似乎并不准确匹配。
例如。如果我正常运行它,它会从 1,500 MB 可用空间开始,并在 300 MB 左右抛出异常。
但是,如果我启动像 After Effects 这样的大型应用程序并让它使用我的大量内存。
然后我的应用程序从 300 开始,大约 200 张图像,然后抛出大约 40 MB 的异常,但只有在它已经达到 0 MB 并由于某种原因反弹回来之后。
如何确定我的 C# 应用程序实际可用的 RAM 量,以便知道我可以缓存以供播放的确切图像数量,而无需接近当前 PC 的上限和风险异常?
【问题讨论】:
-
您确定这不是由其他问题引起的吗?比如没有正确处理你的图片?
-
@Steve 图像没有被处理,因为我希望它们在 RAM 中以便更快地播放。所以问题是,我如何计算有多少图像可用于缓存。
标签: c# memory garbage-collection malloc ram