我正在编写一个为大型文档中的每一页生成缩略图的程序。出于性能原因,我希望尽可能长时间地将缩略图保留在内存中,但我希望操作系统能够在它决定有另一个更重要的用途时回收该内存(例如,用户已经开始运行不同的应用程序。)
如果记忆消失了,我总是可以稍后重新生成缩略图。
是否有任何跨平台方法可以将内存标记为需要时可以删除?该程序是用 C++ 编写的。
编辑:只是为了澄清,而不是在内存不足时通知或定期监视系统的内存量,我更多地考虑分配内存,然后在不使用时“解锁”它。然后,操作系统可以在需要时窃取未锁定的内存(即使是磁盘缓冲区,如果它认为这样可以更好地利用内存),作为程序员,我所要做的只是在我打算使用之前再次“锁定”内存. 如果锁定失败,我知道内存已被其他用途重用,因此我需要再次重新生成缩略图,如果锁定成功,我可以继续使用以前的数据。
原因是我可能会在屏幕上显示一个文档的 20 页,但我也可以保留其他 200 页左右的缩略图,以防用户滚动一下。但是如果他们去做其他事情一段时间,那块内存可能会更好地用作磁盘缓存或存储网页或其他东西,所以我希望能够告诉操作系统它可以重用我的一些内存,如果它想要。
必须监视系统范围内的可用内存量可能无法实现目标(我的内存永远不会被回收以改善磁盘缓存),并且获得低内存通知只会在紧急情况下有所帮助。我希望通过使用锁定/解锁方法,这可以以更轻量级的方式实现,并有利于系统在非紧急情况下的性能。