C# 动态地将最近的对象保存在内存中,并在需要时加载较旧的对象
C# Dynamically keep recent objects in memory and load the olders when needed
我需要监控剪贴板并建立一个过去剪辑的列表。问题是我需要保留尽可能多的剪辑。虽然小文本或 filedrop 很便宜,但大图像会占用大量内存,例如复制到剪贴板的 20MP 图像。
我的计划是将剪辑保存到 SQLite
,当用户在剪贴板中向前或向后导航时,内存中的列表会动态构建以便更快地预览(不必等待 SQL Query
,并加载图像)。
pagination
系统可以是其他解决方案。
我想知道是否有任何类型的库可以完成这种工作,例如同时具有 memory management
的缓存或解决此问题的更好方法
这听起来像是您在未实际测试性能的情况下尝试过早优化。在您尝试想出节省内存的巧妙方法之前,让您的解决方案发挥作用。
接下来,尝试您概述的几种管理内存的策略,并对每一种策略进行测量。决定你愿意接受哪种权衡。
最简单的方法是将所有内容都留在内存中(在数组中),设置内存限制,跟踪要添加的每个项目的大小,并截断最旧的项目,直到可以容纳要添加的项目。
我需要监控剪贴板并建立一个过去剪辑的列表。问题是我需要保留尽可能多的剪辑。虽然小文本或 filedrop 很便宜,但大图像会占用大量内存,例如复制到剪贴板的 20MP 图像。
我的计划是将剪辑保存到 SQLite
,当用户在剪贴板中向前或向后导航时,内存中的列表会动态构建以便更快地预览(不必等待 SQL Query
,并加载图像)。
pagination
系统可以是其他解决方案。
我想知道是否有任何类型的库可以完成这种工作,例如同时具有 memory management
的缓存或解决此问题的更好方法
这听起来像是您在未实际测试性能的情况下尝试过早优化。在您尝试想出节省内存的巧妙方法之前,让您的解决方案发挥作用。
接下来,尝试您概述的几种管理内存的策略,并对每一种策略进行测量。决定你愿意接受哪种权衡。
最简单的方法是将所有内容都留在内存中(在数组中),设置内存限制,跟踪要添加的每个项目的大小,并截断最旧的项目,直到可以容纳要添加的项目。