утечка памяти в web.py - PullRequest
1 голос
/ 02 марта 2011

Я что-то не так делаю или утечка памяти в web.py?

import web

class Index:
  def GET(self): return 'hello web.py'
app = web.application(('/*', 'Index'), globals())
app.run()

Запустите указанный выше файл. Посмотрите, сколько памяти использует задание. Перейдите на localhost: 8080 в вашем браузере. Закройте браузер (чтобы страница не кэшировалась), затем снова откройте страницу и посмотрите, как увеличивается использование памяти. Он увеличивается при каждом закрытии браузера и повторном посещении страницы.

Запуск python 2.6 на Win XP.

1 Ответ

4 голосов
/ 02 марта 2011

После запуска вашего кода и отправки ему тысяч запросов (через другой процесс Python, использующий urllib2), я обнаружил, что он увеличивается примерно на 200 тыс. В течение первых нескольких сотен запросов, а затем перестает расти.Это не кажется необоснованным, и это не должно указывать на утечку памяти.Помните, что Python использует автоматическое управление памятью посредством комбинации подсчета ссылок и сбора мусора, поэтому нет гарантии, что каждый бит памяти, который он использует, можно использовать повторно в тот момент, когда он больше не используется;и он может запросить память у ОС и затем не вернуть ее, даже если она больше не нужна.

Поэтому я думаю, что ответ таков: вы не делаете ничего плохого, но web.py не делаетутечка памяти.

...