私は、常時稼働している複雑なPythonサーバーアプリケーションを持っています。以下は非常に単純化されたバージョンです。pypyのメモリ使用量は永遠に増えますか?
私は以下のアプリをpythonで実行します。 "python Main.py"それは直ちに8MBのRAMを使い、8MBのRAMにとどまる。
私はpypy "pypy Main.py"を使って実行します。それは22MBのRAMを使用することから始まり、時間の経過とともにRAMの使用量が増えます。 30秒後に50MBで、1時間後に60MBで。
"b.something()"を "pass"に変更すると、そのようなメモリが邪魔になることはありません。
私はOSX 10.7.4でpypy 1.9を使用しています。 私はpythonよりも多くのRAMを使用しても大丈夫です。
パイピーが長時間メモリを使い果たしてしまうのを防ぐ方法はありますか?以下は
import sys
import time
import traceback
class Box(object):
def __init__(self):
self.counter = 0
def something(self):
self.counter += 1
if self.counter > 100:
self.counter = 0
try:
print 'starting...'
boxes = []
for i in range(10000):
boxes.append(Box())
print 'running!'
while True:
for b in boxes:
b.something()
time.sleep(0.02)
except KeyboardInterrupt:
print ''
print '####################################'
print 'KeyboardInterrupt Exception'
sys.exit(1)
except Exception as e:
print ''
print '####################################'
print 'Main Level Exception: %s' % e
print traceback.format_exc()
sys.exit(1)
は時間のリストと、その時点でのRAM使用量である(私はそれが一晩実行したまま)。
Wed Sep 5 22:57:54 2012, 22mb ram
Wed Sep 5 22:57:54 2012, 23mb ram
Wed Sep 5 22:57:56 2012, 24mb ram
Wed Sep 5 22:57:56 2012, 25mb ram
Wed Sep 5 22:57:58 2012, 26mb ram
Wed Sep 5 22:57:58 2012, 27mb ram
Wed Sep 5 22:57:59 2012, 29mb ram
Wed Sep 5 22:57:59 2012, 30mb ram
Wed Sep 5 22:58:00 2012, 31mb ram
Wed Sep 5 22:58:02 2012, 32mb ram
Wed Sep 5 22:58:03 2012, 33mb ram
Wed Sep 5 22:58:05 2012, 34mb ram
Wed Sep 5 22:58:08 2012, 35mb ram
Wed Sep 5 22:58:10 2012, 36mb ram
Wed Sep 5 22:58:12 2012, 38mb ram
Wed Sep 5 22:58:13 2012, 39mb ram
Wed Sep 5 22:58:16 2012, 40mb ram
Wed Sep 5 22:58:19 2012, 41mb ram
Wed Sep 5 22:58:21 2012, 42mb ram
Wed Sep 5 22:58:23 2012, 43mb ram
Wed Sep 5 22:58:26 2012, 44mb ram
Wed Sep 5 22:58:28 2012, 45mb ram
Wed Sep 5 22:58:31 2012, 46mb ram
Wed Sep 5 22:58:33 2012, 47mb ram
Wed Sep 5 22:58:35 2012, 49mb ram
Wed Sep 5 22:58:35 2012, 50mb ram
Wed Sep 5 22:58:36 2012, 51mb ram
Wed Sep 5 22:58:36 2012, 52mb ram
Wed Sep 5 22:58:37 2012, 54mb ram
Wed Sep 5 22:59:41 2012, 55mb ram
Wed Sep 5 22:59:45 2012, 56mb ram
Wed Sep 5 22:59:45 2012, 57mb ram
Wed Sep 5 23:00:58 2012, 58mb ram
Wed Sep 5 23:02:20 2012, 59mb ram
Wed Sep 5 23:02:20 2012, 60mb ram
Wed Sep 5 23:02:27 2012, 61mb ram
Thu Sep 6 00:18:00 2012, 62mb ram
Hmm。私はこれを再現することはできません。 pypy 1.9(Macports製)とOS X 10.6.8では、メモリ使用量(RSIZEカラムの 'top'によって報告されている)が約46Mに留まることがわかりました。バグ報告の価値があるかもしれません。 –
私はまだこのプロセスを実行しています。新しいデータポイント: Thu Sep 6 09:02:26 2012、63MB RAM – DavidColquhoun
pypy 1.8を使用してこれを再現できますが、1.9はこの問題を修正したようです。 – goncalopp