Я хотел бы написать следующий код в c#. a) маленькое консольное приложение, которое моделирует утечку памяти. b) маленькое консольное приложение, которое вызвало бы вышеупомянутое приложение и выпустило бы его сразу же моделирующий управляющий проблемой утечки памяти..
Другими словами, (b) приложение непрерывно называло бы и выпускало бы приложение (a), чтобы моделировать, как "мятежное" приложение утечки памяти содержится с обращением к первопричине, которая является приложением (a).
Некоторый пример кода для приложения (a) и (b) был бы очень полезен.
Спасибо
Утечка из приложения может выглядеть так:
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 . Некоторые из них возвращают, сколько памяти потребляет процесс. Вы можете использовать один из них, чтобы условно убить процесс.
Просто создайте объекты IDisposable и не удаляйте их! Примерами являются Изображение
Графика
или любой вид дескриптора или кода, который переходит в неуправляемый код для создания / управления ресурсами.
Вы можете смоделировать утечку памяти, просто добавив объекты в глобальный список по таймеру.