OOM,多次操作FileStream造成内存溢出

public static string GetLocation(string typename, string itemid, string certname, object imgno, object imgname, byte[] byData, out string errMsg)
        {
            //GC.Collect();
            string strfile = "";
            try
            {
                strfile = String.Format("{0}\\fileImages", Application.StartupPath);
                if (!Directory.Exists(strfile))
                {
                    Directory.CreateDirectory(strfile);
                }
                strfile = String.Format("{0}\\{1}_{2}_{3}_{4}_{5}_{6}", strfile, DateTime.Now.ToString("yyyyMMdd"), typename, itemid, certname, imgno, imgname);
                if (!File.Exists(strfile))
                {
                    FileStream fs = File.Create(strfile);
                    fs.Close();
                    fs.Dispose();
                    File.WriteAllBytes(strfile, byData);
                }
                errMsg = "";
            }
            catch (Exception ex)
            {
                errMsg = ex.Message;
            }
            finally
            {
                GC.GetTotalMemory(true);
            }
            return strfile;
        }

监测内存的时候,发现程序运开始调用这里后,操作图片与fs时,内存只增不减,即使做了上述的释放操作,也没有效果。
各位帮忙给指点下。。

正常。
垃圾回收机制就是Dispose()只是标记对象可释放而已,等到空闲时或者内存不足时,才会真正进行释放。
所以一段时间内,连续创建对象并Dispose(),内存用量是只增不减的。

那么需要怎么操作,才能即时释放啊,我连续调用这个方法操作了五十多张图片,就内存溢出了。电脑都卡的一蹦一蹦的。

是不是对应的对象没有及时释放,或者没有自动回收

http://mzh3344258.blog.51cto.com/1823534/804237/