Как определить утечку памяти в приложении .NET
Привет ,
Я дал проект, чтобы определить первопричину утечек памяти в веб-приложении на основе .net.
Это первый раз, когда я дал такое задание. Я не знаю, как искать утечки памяти, любые предложения, пожалуйста.
Я обновил свой вопрос с помощью блока кода, приведет ли этот блок кода к какой-либо утечке памяти.
Может ли кто-нибудь просмотреть блок кода и предоставить некоторую информацию о строке кода, которая может вызвать утечку памяти, если таковая имеется.
Что я уже пробовал:
проверка наличия статических классов и использование диагностических средств, предоставляемых visual studio 2019
<pre>[HttpPost] [ValidateAntiForgeryToken] public ActionResult SaveFileData(FileEdit model) { var file = new File(); EntityMapper<FileEdit, File>.Map(model, file); string fileName = string.Empty; string relativePath = string.Empty; string extension = string.Empty; file.SchoolId = SessionHelper.CurrentSession.SchoolId; file.IsActive = true; bool result = false; if (model.PostedFile != null) { fileName = model.PostedFile.FileName; extension = Path.GetExtension(model.PostedFile.FileName).Replace(".", ""); //string resourceDir = Server.MapPath(Constants.ResourcesDir); //string fileContent = Server.MapPath(Constants.FileDir); //string fileModule = Server.MapPath(Constants.BlogDir + "/Module_" + model.ModuleId); //string filePath = Server.MapPath(Constants.BlogDir + "/Module_" + model.ModuleId + "/User_" + SessionHelper.CurrentSession.Id); string resourceDir = MyConfiguration.Instance.WriteFilePath + Constants.ResourcesDir; string fileContent = MyConfiguration.Instance.WriteFilePath + Constants.FileDir; string fileModule = MyConfiguration.Instance.WriteFilePath + Constants.FileDir + "/Module_" + model.ModuleId; string filePath = MyConfiguration.Instance.WriteFilePath + Constants.FileDir + "/Module_" + model.ModuleId + "/User_" + SessionHelper.CurrentSession.Id; Common.Helpers.CommonHelper.CreateDestinationFolder(resourceDir); Common.Helpers.CommonHelper.CreateDestinationFolder(fileContent); Common.Helpers.CommonHelper.CreateDestinationFolder(fileModule); Common.Helpers.CommonHelper.CreateDestinationFolder(filePath); fileName = Guid.NewGuid() + "_" + fileName; relativePath = Constants.FileDir + "/Module_" + model.ModuleId + "/User_" + SessionHelper.CurrentSession.Id + "/" + fileName; var extId = _fileTypeList.FirstOrDefault(r => r.Extension.Contains(extension.ToLower())).TypeId; fileName = Path.Combine(filePath, fileName); model.PostedFile.SaveAs(fileName); file.FileName = model.PostedFile.FileName; file.FilePath = relativePath; file.FileTypeId = extId; file.FolderId = !string.IsNullOrWhiteSpace(model.ParentFolderId) ? Convert.ToInt32(EncryptDecryptHelper.DecryptUrl(model.ParentFolderId)) : 0; file.SectionId = !string.IsNullOrWhiteSpace(model.SectId) ? Convert.ToInt32(EncryptDecryptHelper.DecryptUrl(model.SectId)) : 0; if (model.FolderId > 0) { file.UpdatedBy = SessionHelper.CurrentSession.Id; result = _fileService.Update(file); } else { file.CreatedBy = SessionHelper.CurrentSession.Id; result = _fileService.Insert(file); } return Json(new OperationDetails(result), JsonRequestBehavior.AllowGet); } return Json(new OperationDetails(result), JsonRequestBehavior.AllowGet); }