c# - 数据查看器应用程序 C# 的内存问题
问题描述
我的应用程序是一个数据查看器,因此它由行和列以及单个单元格组成(想想 Excel)。
让我稍微描述一下我的数据结构。数据集是列的集合。每列都有一组单元格。每个单元格都绑定了一个 VariableContent 类,您可以在下面看到。
object _content;
/// <summary>
/// Gets or sets the content of the cell
/// </summary>
public object Content {
get {
return (_content);
}
set {
_content = value;
OnPropertyChanged(nameof(Content));
}
}
ObservableCollection<Comment> _comments;
public ObservableCollection<Comment> Comments
{
get
{
return (_comments);
}
set
{
_comments = value;
OnPropertyChanged(nameof(Comments));
}
}
Color _color = Brushes.Transparent.Color;
public Color Color
{
get { return _color; }
set
{
_color = value;
OnPropertyChanged(nameof(Color));
}
}
public VariableContent(object Content, ObservableCollection<VariableComment> Comments, Color Color)
{
PropertyChanged = null;
this.Content = Content;
this.Comments = Comments;
this.Color = Color;
}
因此,对于每个单元格,我们可能会存储一个评论列表和一种颜色。Comments 和 Color 属性是新的,因为我们最近添加了一个能够为单元格着色以及向单元格添加评论的功能。
但是,我发现对于大型数据集(例如数十万行),由于有很多单元格,因此初始化了这个 VariableContent 类的许多实例,内存使用量增加了大约三分之一,这太多了,与更新之前相比,我们在此类中没有 Color 和 Comments 属性。另一个副作用是数据集的加载时间也增加了三分之一。
将属性值设置为 null 没有区别,只有从类中删除属性才会再次降低内存占用。我还能做些什么来帮助这个吗?
解决方案
如果您使用大数据,那么您需要使用分页。在对数据进行分页时,页面中显示的精确记录取决于所请求的数据页和每页显示的记录数。内存使用量不会增加,数据集加载时间会更快。将大数据加载到 ObservableCollection 并不是一个好的解决方案
推荐阅读
- javascript - 使用管道时出现属性绑定错误
- arrays - 移动字符串中的所有辅音,直到遇到第一个元音
- react-router - Firebase托管中的空白页面,带有url reactjs中的参数
- python - 音素级发音正确性 Microsoft Speech
- excel - 是否有脚本或表格功能可以在 x 列中查找所有特定单词出现并在 y 列中添加相应的值?
- visual-c++ - 流行的 CMake 构建系统和用于 OpenCASCADE 的 genproj 工具之间的区别
- r - 闪亮的observeEvent显示第一个事件,但不是第二个,第三个
- android - 关于在 Android 中访问 HTC 安全盒功能的问题
- excel - 如何增加行的单元格值,但在列中重复它们?
- angular - 带有 Angular 的 Youtube 截图