C# 动态地将最近的对象保存在内存中,并在需要时加载较旧的对象

C# Dynamically keep recent objects in memory and load the olders when needed

我需要监控剪贴板并建立一个过去剪辑的列表。问题是我需要保留尽可能多的剪辑。虽然小文本或 filedrop 很便宜,但大图像会占用大量内存,例如复制到剪贴板的 20MP 图像。

我的计划是将剪辑保存到 SQLite,当用户在剪贴板中向前或向后导航时,内存中的列表会动态构建以便更快地预览(不必等待 SQL Query ,并加载图像)。 pagination 系统可以是其他解决方案。

我想知道是否有任何类型的库可以完成这种工作,例如同时具有 memory management 的缓存或解决此问题的更好方法

这听起来像是您在未实际测试性能的情况下尝试过早优化。在您尝试想出节省内存的巧妙方法之前,让您的解决方案发挥作用。

接下来,尝试您概述的几种管理内存的策略,并对每一种策略进行测量。决定你愿意接受哪种权衡。

最简单的方法是将所有内容都留在内存中(在数组中),设置内存限制,跟踪要添加的每个项目的大小,并截断最旧的项目,直到可以容纳要添加的项目。