Восстановить память из w3wp.exe
Можно ли восстановить потерянную память от w3wp.exe? Я думал, что session.abandon() должен очистить такие ресурсы? Дело в том, что у меня есть веб-приложение, некоторые страницы делают w3wp.exe значительно расти. Как от 40 МБ до 400 МБ. Теперь я собираюсь демонстративно оптимизировать мой код, чтобы уменьшить это, однако, на какое бы количество w3wp.exe не увеличивался, нет ли способа восстановить потерянную память, даже если пользователь вышел из системы и закрыл браузер?
Я знаю, что этот рабочий процесс будет перезагружен через 30 минут (по умолчанию) простоя, но что, если в течение длительного времени не используется период простоя, а рабочий процесс все еще имеет эту часть памяти, он просто продолжает расти? Есть мысли, люди?
2 ответа
Сборщик мусора позаботится о том, какая память должна быть освобождена, при условии, что вы правильно расположили вещи и т. Д. GC не пинается каждый раз, когда вы вызываете Session.Abandon(), так как это будет серьезным ударом по производительности.
Тем не менее, каждое приложение имеет "нормальное" использование памяти, то есть стабильное использование памяти (опять же, при условии, что у вас нет утечек), и этот показатель отличается для каждого приложения. 400 МБ может быть много или ничего, в зависимости от того, что делает ваше приложение. У меня есть приложения, которые занимают около 400 МБ, а другие около 1,5 ГБ, и это нормально, пока использование памяти где-то стабилизируется. Если вы видите неограниченное использование памяти, то, скорее всего, где-то в вашем приложении есть утечка.
Хранение больших объемов данных в сеансе in-proc также может быстро увеличить использование памяти. Вместо этого используйте файл или базу данных для хранения этих данных.
До тех пор, пока вы не потеряете память, диспетчер памяти будет использовать эту память повторно, поэтому вы не должны видеть, что память процесса продолжает расти.