私は、メモリを割り当てる非常に単純なスクリプトを持っています。dels
これは、サイズの大きいオブジェクトへの唯一の参照であり、印刷heapy
とpidstat
レポートの作成中です。スクリプトを実行した後、heapy はメモリをあまり使用しないように指示しますが、pidstat は反対のことを伝えます。
from guppy import hpy
import time
import sys
import os
'''
1) print heapy and pidstat report after starting and before actually doing any work
2) allocate some memory in a simple 2d array
3) print heapy and pidstat report
4) del the d2 array (attempt at garbage collection)
5) print heapy and pidstat report
6) sleep so pidstat can continue to be run to check on memory
'''
def pidstat(msg):
print '==============================='
print msg
os.system('pidstat -r -p %s' % os.getpid())
print '+++++++++++++++++++++++++++++++'
print hpy().heap()[0]
print '==============================='
pidstat('before doing anything')
docs = []
for doc in range(0, 10000):
docs.append([j for j in range(0, 1000)])
pidstat('after fetching all the docs into memory')
del docs
pidstat('after freeing the docs')
time.sleep(60)
出力は次のようになります。
=============================== 何かをする前に Linux 2.6.38-15-generic (hersheezy) 2012 年 8 月 14 日 _x86_64_ (4 CPU) 01:05:20 PM PID minflt/s majflt/s VSZ RSS %MEM コマンド 01:05:20 PM 5360 0.44 0.00 44768 9180 0.11 パイソン +++++++++++++++++++++++++++++++++ 19760 個のオブジェクトのセットのパーティション。合計サイズ = 1591024 バイト。 インデックス カウント % サイズ % 累積 % 種類 (クラス / クラスの辞書) 0 19760 100 1591024 100 1591024 100 スト =============================== =============================== すべてのドキュメントをメモリにフェッチした後 Linux 2.6.38-15-generic (hersheezy) 2012 年 8 月 14 日 _x86_64_ (4 CPU) 01:05:21 PM PID minflt/s majflt/s VSZ RSS %MEM コマンド 01:05:21 PM 5360 8.95 0.00 318656 279120 3.49 パイソン +++++++++++++++++++++++++++++++++ 7431665 個のオブジェクトのセットのパーティション。合計サイズ = 178359960 バイト。 インデックス カウント % サイズ % 累積 % 種類 (クラス / クラスの辞書) 0 7431665 100 178359960 100 178359960 100 整数 =============================== =============================== ドキュメントを解放した後 Linux 2.6.38-15-generic (hersheezy) 2012 年 8 月 14 日 _x86_64_ (4 CPU) 01:05:29 PM PID minflt/s majflt/s VSZ RSS %MEM コマンド 01:05:29 PM 5360 40.23 0.00 499984 460480 5.77 パイソン +++++++++++++++++++++++++++++++++ 19599 個のオブジェクトのセットのパーティション。合計サイズ = 1582016 バイト。 インデックス カウント % サイズ % 累積 % 種類 (クラス / クラスの辞書) 0 19599 100 1582016 100 1582016 100 文字 ===============================
このメモリがオペレーティング システムに返されることを確認するにはどうすればよいですか?