LINUX.ORG.RU

История изменений

Исправление gh0stwizard, (текущая версия) :

Извини, я тебя поправлю, ок?

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

Утечка памяти это когда использование памяти программой в ходе использования постоянно растёт при одинаковых входных данных, которые поступают циклично.

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

Почему так правильно? Потому что, ты рассматриваешь случай когда под хэш память выделяется динамически (realloc). А может быть случай, когда выделили несколько десятков Гб, по теории все что жует программа должно уместится в него. Однако, на пятый день, с восходом солнца, потребление памяти выросло на значительное число, скажем, 100 мегабайт. Хотя цикл для прогона всех возможных вариантов входных данных программы всего составляет день. Т.е. в течении последних 4 дней никто не заметил утечку в 25 мегабайт, но заметили в 100.

Ровно поэтому ява якобы никогда не течет — у нее просто есть лимиты для кучи. И если программа течет, то получается out of memory на уровне VM (хотя в системе полно свободной памяти).

Извините, еще раз.

Исходная версия gh0stwizard, :

Извини, я тебя поправлю, ок?

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

Утечка памяти это когда использование памяти программой в ходе использования постоянно растёт при одинаковых входных данных, которые поступают циклично.

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

Почему так правильно? Потому что, ты рассматриваешь случай когда под хэш память выделяется динамически (realloc). А может быть случай, когда выделили несколько десятков Гб, по теории все что жует программа должно уместится в него. Однако, на пятый день, с восходом солнца, потребление памяти выросло на значительное число, скажем, 100 мегабайт. Хотя цикл для прогона всех возможных вариантов входных данных программы всего составляет день. Т.е. в течении последних 4 дней никто не заметил утечку в 10 мегабайт, но заметили в 100.

Ровно поэтому ява якобы никогда не течет — у нее просто есть лимиты для кучи. И если программа течет, то получается out of memory на уровне VM (хотя в системе полно свободной памяти).

Извините, еще раз.