Breakpoint если программа зажралась

411
04 февраля 2017, 06:59

Хочу поставить условный breakpoint, который сработает, если программа съела слишком много памяти. Попытался прописать такое в условие:

GC.GetTotalMemory(false) > 4000000000

Но получилось, что программа просто перестаёт работать - визуально похоже на какой-нибудь дедлок. Хотя, один раз из четырёх запусков получил такое:

Как правильно сделать такой breakpoint? Или даже просто, как заставить VS остановить (но не завершить) исполнение при достижении некого объёма потребляемой памяти?

На всякий случай отмечу, что breakpoint находится внутри lock-секции.

Answer 1

Традиционный способ с if и безусловным breakpoint'ом вполне сработал:

if (GC.GetTotalMemory(false) > 4000000000)
  offset = offset; // Тут breakpoint

PS: Но почему-то после этого программа перестала выжирать все 32 гига подкачки и стала вполне укладываться в традиционные 3. o_O

READ ALSO
Как сбросить значения по умолчанию для составных свойств в PropertyGrid?

Как сбросить значения по умолчанию для составных свойств в PropertyGrid?

У меня есть класс со свойствами в качестве объектов каких-то еще классовНапример:

353
Регулярное выражение для ФИО

Регулярное выражение для ФИО

Нужно регулярное выражение где в имени первая буква должна быть большой и другие большие буквы нужно запретить, за исключением случая когда...

512
Кэширование объектов с учетом их полей

Кэширование объектов с учетом их полей

Есть объекты, которые предоставляют данные для постройки графикаНужно построить механизм кэширования этих объектов, но не простой а с некоторой...

354
EntityFramework 6 и DB2

EntityFramework 6 и DB2

При выводе списка в представлении происходит ошибка Поле не найдено: "DB2ConnSettings_bEnableEFCaseSensitivity"

461