История изменений
Исправление
gh0stwizard,
(текущая версия)
:
Извини, я тебя поправлю, ок?
утечка памяти - это когда использование памяти программой в ходе использования постоянно растёт. В этом смысле любая мемоизация на достаточно большом множестве возможных входных данных является утечкой памяти.
Утечка памяти это когда использование памяти программой в ходе использования постоянно растёт при одинаковых входных данных, которые поступают циклично.
Рост памяти для мемоизации будет нормальным, если входные данные разные. Утечка начнется тогда, когда для одного и того же входного данного получается непредвиденный рост потребления памяти.
Почему так правильно? Потому что, ты рассматриваешь случай когда под хэш память выделяется динамически (realloc). А может быть случай, когда выделили несколько десятков Гб, по теории все что жует программа должно уместится в него. Однако, на пятый день, с восходом солнца, потребление памяти выросло на значительное число, скажем, 100 мегабайт. Хотя цикл для прогона всех возможных вариантов входных данных программы всего составляет день. Т.е. в течении последних 4 дней никто не заметил утечку в 25 мегабайт, но заметили в 100.
Ровно поэтому ява якобы никогда не течет — у нее просто есть лимиты для кучи. И если программа течет, то получается out of memory на уровне VM (хотя в системе полно свободной памяти).
Извините, еще раз.
Исходная версия
gh0stwizard,
:
Извини, я тебя поправлю, ок?
утечка памяти - это когда использование памяти программой в ходе использования постоянно растёт. В этом смысле любая мемоизация на достаточно большом множестве возможных входных данных является утечкой памяти.
Утечка памяти это когда использование памяти программой в ходе использования постоянно растёт при одинаковых входных данных, которые поступают циклично.
Рост памяти для мемоизации будет нормальным, если входные данные разные. Утечка начнется тогда, когда для одного и того же входного данного получается непредвиденный рост потребления памяти.
Почему так правильно? Потому что, ты рассматриваешь случай когда под хэш память выделяется динамически (realloc). А может быть случай, когда выделили несколько десятков Гб, по теории все что жует программа должно уместится в него. Однако, на пятый день, с восходом солнца, потребление памяти выросло на значительное число, скажем, 100 мегабайт. Хотя цикл для прогона всех возможных вариантов входных данных программы всего составляет день. Т.е. в течении последних 4 дней никто не заметил утечку в 10 мегабайт, но заметили в 100.
Ровно поэтому ява якобы никогда не течет — у нее просто есть лимиты для кучи. И если программа течет, то получается out of memory на уровне VM (хотя в системе полно свободной памяти).
Извините, еще раз.