Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 9, 2013 12:14:43

droff
Зарегистрирован: 2013-08-09
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

python освобождение памяти

Доброго времени суток!
Подскажите пожалуйста:
Есть python 2.7.3 , проблема с освобождением памяти даже после принудительного запуска gc.collect()

а = []
for i in xrange(10000000):
    a.append(i)
del a
import gc
gc.collect()

Почему так может быть?

Отредактировано droff (Авг. 9, 2013 12:15:08)

Офлайн

#2 Авг. 9, 2013 12:58:15

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

python освобождение памяти

Как вы проверяете освободилась память или нет? Вы проверяли, что эта память не будет отдана другому процессу по требованию? Вы уверены, что при повторном выполнении операции будет занято еще столько же памяти, а не переиспользована прежняя?



Отредактировано Soteric (Авг. 9, 2013 12:59:13)

Офлайн

#3 Авг. 9, 2013 13:18:19

droff
Зарегистрирован: 2013-08-09
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

python освобождение памяти

Soteric
Как вы проверяете освободилась память или нет? Вы проверяли, что эта память не будет отдана другому процессу по требованию? Вы уверены, что при повторном выполнении операции будет занято еще столько же памяти, а не переиспользована прежняя?

> как вы проверяете освободилась память или нет?
ps, pmap, top Память не то что совсем не освобождается, но большая часть все равно так и остается висеть

>Вы проверяли, что эта память не будет отдана другому процессу по требованию?
уверен так как она физически занимает память

>Вы уверены, что при повторном выполнении операции будет занято еще столько же памяти, а не переиспользована прежняя?

уверен, так как при повторной операции она увеличивается вдвое

Отредактировано droff (Авг. 9, 2013 13:33:07)

Офлайн

#4 Авг. 9, 2013 13:21:01

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

python освобождение памяти

droff
возможно это сам интерпретатор висит в памяти ?
И вместо

droff
gc.collect()
использовать kill ?

Офлайн

#5 Авг. 9, 2013 13:30:23

droff
Зарегистрирован: 2013-08-09
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

python освобождение памяти

>возможно это сам интерпретатор висит в памяти ?
нет, интерпретатор копейки занимает, повторюсь память растет

>использовать kill ?
Это костыль а не решение, Вы еще скажите интерпретатор не запускать…

Вопрос из-за чего память утекает ….

Отредактировано droff (Авг. 9, 2013 13:35:11)

Офлайн

#6 Авг. 9, 2013 14:15:01

adray
Зарегистрирован: 2012-09-15
Сообщения: 123
Репутация: +  18  -
Профиль   Отправить e-mail  

python освобождение памяти

Скорее всего из-за free-lists:
1
2

При удалении объекта (скажем, инта) в питоне, ставится соответствующий маркер в free-list. При создании нового объекта память реиспользуется.

Если несколько раз проделать

a = []
for i in xrange(10000000):
    a.append(i)
del a
то потребление памяти не увеличится

Офлайн

#7 Авг. 9, 2013 15:07:18

droff
Зарегистрирован: 2013-08-09
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

python освобождение памяти

adray
Скорее всего из-за free-lists:12При удалении объекта (скажем, инта) в питоне, ставится соответствующий маркер в free-list. При создании нового объекта память реиспользуется.Если несколько раз проделать

Похоже на правду, спасибо!

Хотя очень интересно, возможно это зависит от платформы на которой запущен python
Я опробовал тот же фокус провернуть на винде (win7), так там память освобождалась сразу после gc.collect()

Офлайн

#8 Авг. 10, 2013 00:53:24

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

python освобождение памяти

droff
это точно зависит от платформы, так как UNIX и Windows в этом плане сильно отличаются



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#9 Авг. 10, 2013 08:50:03

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

python освобождение памяти

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version