我正在编写一个程序,为大型文档中的每一页生成缩略图。出于性能考虑,我想尽可能长时间地将缩略图保留在内存中,但如果操作系统决定有其他更重要的用途(例如用户开始运行不同的应用程序),我希望它能够重新获取这些内存。
如果内存消失了,我可以随时重新生成缩略图。
有没有跨平台标记内存为“可在需要时删除”的方法?该程序使用C++编写。
编辑:为了澄清,与其在内存不足时得到通知或定期监视系统的内存量,我更倾向于分配内存,然后在它不使用时“解锁”它。然后,如果需要,操作系统就可以窃取未锁定的内存(即使是磁盘缓冲区,如果它认为那是更好的内存使用),作为程序员,我只需要在再次使用它之前“锁定”内存。如果锁定失败,则说明内存已被重新用于其他用途,因此我需要重新生成缩略图;如果锁定成功,则可以继续使用以前的数据。
原因是我可能在屏幕上显示大约20页文档,但我可能会保留其他200页的缩略图以防用户滚动一下。但是,如果他们有一段时间不使用,那么该内存可能更好地用作磁盘缓存或用于存储网页之类的内容,因此我希望能够告诉操作系统如果需要,可以重新使用我的一些内存。
必须监视系统范围内的可用内存量可能无法达到目标(我的内存永远不会被回收以改善磁盘缓存),并且在低内存通知方面也只有在紧急情况下才有所帮助。我希望通过具有锁定和解锁方法来轻松实现这一点,并在非紧急情况下提高系统性能。
如果内存消失了,我可以随时重新生成缩略图。
有没有跨平台标记内存为“可在需要时删除”的方法?该程序使用C++编写。
编辑:为了澄清,与其在内存不足时得到通知或定期监视系统的内存量,我更倾向于分配内存,然后在它不使用时“解锁”它。然后,如果需要,操作系统就可以窃取未锁定的内存(即使是磁盘缓冲区,如果它认为那是更好的内存使用),作为程序员,我只需要在再次使用它之前“锁定”内存。如果锁定失败,则说明内存已被重新用于其他用途,因此我需要重新生成缩略图;如果锁定成功,则可以继续使用以前的数据。
原因是我可能在屏幕上显示大约20页文档,但我可能会保留其他200页的缩略图以防用户滚动一下。但是,如果他们有一段时间不使用,那么该内存可能更好地用作磁盘缓存或用于存储网页之类的内容,因此我希望能够告诉操作系统如果需要,可以重新使用我的一些内存。
必须监视系统范围内的可用内存量可能无法达到目标(我的内存永远不会被回收以改善磁盘缓存),并且在低内存通知方面也只有在紧急情况下才有所帮助。我希望通过具有锁定和解锁方法来轻松实现这一点,并在非紧急情况下提高系统性能。