具体代码很短.
===================================
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
for (int j = 0; j < 20000; j++)//创建20000个对象
{
List<int> obj_list = new List<int>();
for (int i = 1; i < 3000; i++)//创建一个list对象
{
obj_list.Add(i);
}
string path = @"D:\c#\ConsoleApplication2\cache\" + j;//保存的路径
using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, obj_list);//序列化保存在硬盘上
}
if (j % 300==0)//每300次输出一下
{
Console.WriteLine(j);
}
}
}
}
}
===========================================
问题来了,这个程序执行的时候,该进程占了15mb内存(基本固定不变),然后随着程序一直执行,系统占用内存不断增加.
然后把程序关了.系统就释放了15mb内存.还有1大块内存被无缘无故吃了.然后到D:\c#\ConsoleApplication2\cache\ 下执行 del *.*
删除文件时,系统占用内存不断减少.随着文件被删完,内存不断的释放出来了?怎么回事?
===================================
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
for (int j = 0; j < 20000; j++)//创建20000个对象
{
List<int> obj_list = new List<int>();
for (int i = 1; i < 3000; i++)//创建一个list对象
{
obj_list.Add(i);
}
string path = @"D:\c#\ConsoleApplication2\cache\" + j;//保存的路径
using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, obj_list);//序列化保存在硬盘上
}
if (j % 300==0)//每300次输出一下
{
Console.WriteLine(j);
}
}
}
}
}
===========================================
问题来了,这个程序执行的时候,该进程占了15mb内存(基本固定不变),然后随着程序一直执行,系统占用内存不断增加.
然后把程序关了.系统就释放了15mb内存.还有1大块内存被无缘无故吃了.然后到D:\c#\ConsoleApplication2\cache\ 下执行 del *.*
删除文件时,系统占用内存不断减少.随着文件被删完,内存不断的释放出来了?怎么回事?
FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.ReadWrite));
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, obj_list);//序列化保存在硬盘上
fs.Close();
fs.Dispose();
怎么减少循环呢?