Я разработал в C#. После периода, который я использовал WindowsForms, я переключаюсь на WPF. По прошествии времени я понял, что моему приложению требуется больше времени, чтобы сократить потребление памяти после выполнения высокого процесса. С WinForms у меня не было проблем с этим. Поэтому я проанализировал его с помощью профилировщика памяти, и я обнаружил, что wpfgfx_v0400.dll зарезервировал много памяти, и после этого он не уменьшился. Итак, вопрос в том, какова функция этой библиотеки. Я знаю, что это родная библиотека WPf и в контексте графического рендеринга, но в которой специальные элементы управления wpf или object будут называться этой библиотекой?Потребление памяти wpfgfx_v0400.dll
0
A
ответ
2
Как быстро исправить вы можете использовать этот метод, чтобы очистить память утечки
public class MemoryManagement
{
/// <summary>
/// Clear un wanted memory
/// </summary>
public static void FlushMemory()
{
try
{
GC.Collect();
GC.WaitForPendingFinalizers();
if (Environment.OSVersion.Platform == PlatformID.Win32NT)
{
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
}
}
catch (Exception e)
{
}
}
/// <summary>
/// set process working size
/// </summary>
/// <param name="process">Gets process</param>
/// <param name="minimumWorkingSetSize">Gets minimum working size</param>
/// <param name="maximumWorkingSetSize">Gets maximum working size</param>
/// <returns>Returns value</returns>
[DllImportAttribute("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize", ExactSpelling = true, CharSet =
CharSet.Ansi, SetLastError = true)]
private static extern int SetProcessWorkingSetSize(IntPtr process, int minimumWorkingSetSize, int maximumWorkingSetSize);
}
Добавить класс в приложение и вызовите метод FlushMemory где вы встретили утечку памяти.
Смежные вопросы
- 1. Потребление памяти памяти Java
- 2. Потребление памяти?
- 3. Scala ParRange потребление памяти
- 4. SQLTaskMetrics и потребление памяти
- 5. Потребление памяти iPhone
- 6. QRegularExpressionMatch потребление памяти
- 7. Типичное потребление памяти CppCMS
- 8. Потребление виртуальной памяти pthreads
- 9. Потребление памяти объектов C++
- 10. Потребление памяти матрицы подсчета
- 11. Потребление в памяти
- 12. Потребление памяти Delphi ADO
- 13. Потребление памяти memcached
- 14. Python и потребление памяти
- 15. Java потребление коллекции памяти
- 16. Потребление памяти KDB/Q
- 17. Потребление памяти Node.js & MongoDB
- 18. MediaPlayer потребление памяти
- 19. Потребление памяти по printf()
- 20. станд :: istream_iterator, потребление памяти
- 21. Потребление памяти в Racket
- 22. Огромное потребление памяти UniversalImageLoader
- 23. Потребление памяти python ESL
- 24. Огромное потребление памяти DataTable
- 25. Высокое потребление памяти изображения
- 26. Потребление памяти SQL Server
- 27. Потребление памяти менеджера ресурсов
- 28. Как уменьшить потребление памяти?
- 29. Потребление памяти BigDecimal (Java)
- 30. Потребление памяти Redis
Ничего себе он отлично работает. Какие опасные аспекты могут произойти, когда я использовал очень короткие расстояния? – Lutze
Если это сработало ..пожалуйста, отметьте это как ответ :-). Вы можете выполнить поиск в SetProcessWorkingSetSize –
Когда я его прочитал, единственная вещь, с которой происходит, заключается в том, чтобы сохранить ее на диске. По прошествии времени анализа я вижу, что проблема заключается не в памяти вообще моего собственного кода. Я использую сторонний элемент управления (управление wpf в ядре с использованием C+++), когда я работаю с ним, потребление памяти растет, и когда я распоряжаюсь элементом управления, потребление памяти не падает. Поэтому вопрос в том, что функция действительно хорошая, потому что может случиться так, что функция будет вызывать очень часто. – Lutze