c#: моделируйте утечки памяти

Я хотел бы написать следующий код в c#. a) маленькое консольное приложение, которое моделирует утечку памяти. b) маленькое консольное приложение, которое вызвало бы вышеупомянутое приложение и выпустило бы его сразу же моделирующий управляющий проблемой утечки памяти..

Другими словами, (b) приложение непрерывно называло бы и выпускало бы приложение (a), чтобы моделировать, как "мятежное" приложение утечки памяти содержится с обращением к первопричине, которая является приложением (a).

Некоторый пример кода для приложения (a) и (b) был бы очень полезен.

Спасибо

11
задан dotnet-practitioner 10 June 2010 в 23:23
поделиться

3 ответа

Утечка из приложения может выглядеть так:

public static void Main()
{
  var list = new List<byte[]>();
  while (true)
  {
    list.Add(new byte[1024]); // Change the size here.
    Thread.Sleep(100); // Change the wait time here.
  }
}

А вызывающее приложение может выглядеть так:

public static void Main()
{
  Process process = Process.Start("leaker.exe");
  process.Kill();
}

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

14
ответ дан 3 December 2019 в 04:12
поделиться

Просто создайте объекты IDisposable и не удаляйте их! Примерами являются Изображение Графика или любой вид дескриптора или кода, который переходит в неуправляемый код для создания / управления ресурсами.

4
ответ дан 3 December 2019 в 04:12
поделиться

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

1
ответ дан 3 December 2019 в 04:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: