文件保存到数据库 内存泄露 求教
没上传一个文件总会有约100M内存没有被释放掉 求原因       
        //上传
         private void btnSubmit_Click(object sender, EventArgs e)
         {
             //txbFileFullPath.Text 文件全路径
             using (FileStream fs = new FileStream(txbFileFullPath.Text, FileMode.Open))
             {
                 byte[] bytes;
                 try
                 {
                     bytes = new byte[fs.Length];
                     fs.Read(bytes, 0, bytes.Length);
                 }
                 catch (Exception ex)
                 {
                     MessageBox.Show("错误信息:" + ex.Message, "文件读取出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
                     return;
                 }
                 string strSQL = "Insert into FileData ( [FileName], Filter, FileBytes, UpLoadTime ) values ( @FileName, @Filter, @FileBytes, @UpLoadTime);";
                 SqlParameter[] cmdParms = new SqlParameter[]
              {
                 new SqlParameter("@FileName",SqlDbType.VarChar),
                 new SqlParameter("@Filter", SqlDbType.VarChar),
                 new SqlParameter("@FileBytes", SqlDbType.VarBinary),
                 new SqlParameter("@UpLoadTime",SqlDbType.DateTime)
              };
                 cmdParms[0].Value = txbFileName.Text;
                 cmdParms[1].Value = lbFileType.Text;
                 cmdParms[2].Value = bytes;
                 cmdParms[3].Value = DateTime.Now;
                 DB db = new DB();
                 db.ExecuteNonQuery( CommandType.Text, strSQL, cmdParms);
                 fs.Dispose();
                 btnSubmit.Enabled = false;
             }
         }
         /// <summary>
         /// 生成文件
         /// </summary>
         /// <param name="pReadByte">二进制流</param>
         /// <param name="fileName">文件全路径</param>
         private void WriteFile(byte[] pReadByte, string fileName)
         {
             FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate);
             try
             {
                 fs.Write(pReadByte, 0, pReadByte.Length);
             }
             catch (Exception ex)
             {
                 MessageBox.Show("错误信息:" + ex.Message, "文件生成出错", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 return;
             }
             finally
             {
                 if (fs != null)
                     fs.Close();
             }
         }
         //下载
         private void btnDownLoad_Click(object sender, EventArgs e)
         {
             string strFileName = string.Empty;
             string sql = " Select [FileName], Filter, FileBytes from FileData where ID = " + txbFileID.Text.Trim();
             DB db = new DB();
             //数据表
             using (SqlDataReader sdr = db.GetReader(sql))
             {
                 while (sdr.Read())
                 {
                     strFileName = sdr.GetString(0);
                     byte[] bytes = (byte[])sdr[2];
                     //保存窗体
                     using (SaveFileDialog saveDialog = new SaveFileDialog())
                     {
                         saveDialog.CheckPathExists = true;
                         saveDialog.DefaultExt = sdr.GetString(1);