Как разыскать хитрую утечку памяти с fastMM?

Вам необходимо добавить вершины, прежде чем соединять их с ребрами.

Попробуйте:

edgelist =[(0, 1), (0, 2), (1, 2), (0, 3), (2, 3), (2, 4), (3, 4)]

v_list=[]
for edge in edgelist:
    for v in edge:  
        if v not in v_list:
            v_list.append(v)

g.add_vertices(len(v_list))

А потом:

G.add_edges(edgelist)
7
задан Oliver Giesen 31 December 2008 в 11:25
поделиться

6 ответов

Эта утечка памяти была вызвана ошибкой Delphi, QC # 67709

Она была исправлена ​​последним обновлением Delphi 2009, неудивительно, что я не был в состоянии исправить это.

9
ответ дан 6 December 2019 в 10:55
поделиться

Пока размер пропущенного блока памяти не растет, дольше/больше Ваша программа используется, затем это не беспокойство. Если у Вас есть долговечные объекты, которые только освобождены, когда Вы завершаете приложение, оно совпадает с при утечке их - вся память исправлена после завершения (Если, конечно, у них нет ресурсов дескрипторов вне памяти).

Утечки памяти, в которых Вы хотите быть обеспокоенными, являются теми, которые накапливаются со временем или использование. Если это - 20 байтов, каждый раз затем не потеют он.

7
ответ дан 6 December 2019 в 10:55
поделиться

Я не знаю, существуют ли какие-либо утечки в D2009 VCL, так предположение, что утечка находится в Вашем коде, сначала я проверил бы следующее:

  • есть ли любой массив или список (из-за @DynArraySetLength) созданный в той форме, которая не выпущена, когда Вы располагаете форму.
  • есть ли любая функция, которая создает и возвращает некоторый объект, который должен быть освобожден внешней вызывающей стороной, и если у Вас есть такая функциональная проверка, если вызывающая сторона освобождает тот объект.
  • если это не показывает утечку, то необходимо проверить, уничтожается ли каждый объект, который Вы создаете в своем коде формы, при уничтожении формы.
1
ответ дан 6 December 2019 в 10:55
поделиться

VCL IIRC имел несколько очень маленьких утечек как это, что можно проигнорировать без большого количества беспокойства. Это могло бы быть одним из них!? Надежда кто-то проясняет эту мысль.

0
ответ дан 6 December 2019 в 10:55
поделиться

Я сказал бы, что у Вас есть что-то происходящее в Вашей Форме обработчик событий OnCreate, который выращивает DynArray.
И что DynArray не выпущен в конце.
Но не видя код и на самом деле отлаживая его с FastMM, он близко к невозможному для предположения то, что действительно происходит.

0
ответ дан 6 December 2019 в 10:55
поделиться

В последний раз, когда у меня была загадочная утечка по этим строкам, я просмотрел необработанную память о нарушившем объекте - и увидел текст, который показал мне, что это были за данные. Когда он говорит, что не знает, что это за объект, это, скорее всего, означает, что это не объект в первую очередь - так что посмотрите на динамически выделяемые объекты, включая строки.

1
ответ дан 6 December 2019 в 10:55
поделиться
Другие вопросы по тегам:

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