【发布时间】:2014-08-01 02:01:30
【问题描述】:
实际上,我得到了像save in Db 和combinations of 9 digit number 这样的加密格式的要求。
所以,我使用了一种非常基本的加密算法,并考虑使用 for 循环直到 999,999,999 并将记录保存在 DataTable 和 BulkCopy to SQL 中。
我的程序是这样的:
DataTable DtData = new DataTable();
DtData.Columns.Add("ENCRYPTED_DATA", typeof(string));
for (Int64 i = 1; i <= 999999999; i++)
{
string Number = i.ToString("D9");
string Encrypt = EncryptDecrypt.Encrypt(Number);
DtData.Rows.Add(Encrypt);
if (i % 100000 == 0)
{
GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced);
}
}
但我的问题是我在一段时间后收到out of memory exception。
有没有办法Garbage Collect 或其他方式来节省内存消耗?
实际上GC.Collect 的代码并没有减少我在TaskManager 中看到的内存使用量。
我的PC RAM is 16GB 和处理8,000,000 records is 7 minutes 所需的大致时间。
消耗 16GB 后,它会根据 TaskManager 发出 OutOfMemoryException。
有没有办法减少 MemoryConsumption 并使我的 forloop 完全执行?
【问题讨论】:
-
内存不足是因为内存不足。你在期待什么??
标签: c# for-loop memory-management garbage-collection out-of-memory