-
В процессе работы у одного клиента растет занимаемая память. Через 4-8 дней получает ошибку OutOfMemory
Ситуация осложняется тем, что в работе используются посторонние DLL (Сбербанк, например)
Вопрос: Как отловить "лишнюю занятую" память? Хотя бы свою.
ReportMemoryLeak дает одну единственную утечку ХЗ где-то в WindowProc на 8-12 байт, и всё. Значит, где-то в список какой пихаются данные, которые освобождаются только при закрытии приложения. Списков таких немного, можно отслеживать.
А может где-то контролы не удалятся, а только прячутся.
Как отлавливать такое, порекомендуйте.
-
И Эврика тоже не помогает?
-
> Cobalt © (21.11.17 18:39) > В процессе работы у одного клиента растет занимаемая память. > > Через 4-8 дней получает ошибку OutOfMemory
только у одного? тогда нужно отследить, чем его система или работа с ПО отличается от других.
-
> Через 4-8 дней получает ошибку OutOfMemory
Раз ReportMemoryLeak утечки не дает, значит дело не в памяти, а в ее дефрагментации. Просто в какой-то момент у менеджера не получается выделить требуемый кусок, ибо подходящих такого размера и не занятых банально нет.
-
А почему тогда растет занятая память? по диспетчеру задача растет и виртуальная, и PrivateBytes, и WorkingSet
Можно как-то по карте памяти (если снимать её раз в сутки) понять чем она занята? Как-то отличать строки от классов?
-
-
-
Да карту-то я сниму, вопрос - чё мне с этим добром потом делать?
-
> Да карту-то я сниму, вопрос - чё мне с этим добром потом > делать?
Сравнить с картой памяти у других клиентов, например. Возможно, внедряются какие-то дополнительные DLL хуков, которые гадят, я не знаю твоей ситуации. По меньшей мере - искать разницу.
|