gpt4 book ai didi

c# - 内存未释放 .Net 应用程序

转载 作者:行者123 更新时间:2023-12-05 07:09:01 27 4
gpt4 key购买 nike

我有一个对象列表。列表中的对象数约为 5,06,011。

它消耗了 190MB 的内存。

过了一段时间我就不需要那个列表了。我清除了列表

list.clear() 命令从该列表中清除所有对象。

但是,我的应用程序仍然消耗了 190 MB 的内存。

如何正确处理列表?

public class FileProperty
{
public string Name { get; set; }
public string DirectoryPath { get; set; }
public long LastWriteTime { get; set; }
public long Size { get; set; }
}

void Main()
{
var Sqlite = new SqliteConnection(@"Filename=D:\Work\UserData.db");
var FileProps=Sqlite.Query<FileProperty>("SELECT *FROM FileProperties;").ToList();

//Task completed with that collection
//Now want to free memory
FileProps.Clear();
//But memory not freed
}

最佳答案

list.Clear() 不会重置已经分配的列表的容量。即使在调用 Clear() 之后,容量仍与之前相同,这意味着底层数组尚未被销毁。

在 Clear() 之后调用 TrimExcess() 将重置可能最终释放内存的容量。

但是,一旦该对象未被任何其他数据结构引用,默认情况下它应该符合垃圾回收条件。

关于c# - 内存未释放 .Net 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61750813/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com