3

256MB の RAM を搭載した組み込み Linux システムを使用しています。その上で実行されている大規模なコードベースがあり、ほとんどは C++ ですが、一部のユーティリティは Python で作成されています。Python apt モジュールを使用してシステムの更新を処理する Python の「パッケージ マネージャー」があります(更新は .deb ファイルとして配布されます)。実行中、このアプリケーションはシステム RAM の大部分を使用します。Python プロセスの RSS を見て、top で RAM の使用状況を監視しています (これは、プロセスのメモリ使用状況を分析する有効な方法ではないのでしょうか? 提案をお待ちしています)。

この線

    キャッシュ = apt.Cache() 

システムのステータスをチェックするために定期的に呼び出される. 関数の最後にあるキャッシュ オブジェクトを削除し、gc.collect() を実行してみましたが、あまり効果がないようです。

このプログラムのメモリ使用量を減らすにはどうすればよいですか?

プラットフォームは、Linux 3.2、Debian Wheezy、および Python 2.7.3 を実行する ARM Cortex A8 です。

4

2 に答える 2

6

ガベージ コレクタ インターフェイス モジュール( gc) は、この問題をさらにデバッグするためにここで使用できるものです。

リークしているプログラム呼び出しをデバッグするには:

gc.set_debug(gc.DEBUG_LEAK)

これにより、ガベージ コレクションに関するデバッグ情報がコンソールに出力されます。

さらにデバッグするために、gcモジュールは、ガベージ コレクターによって追跡されるすべてのオブジェクトを一覧表示する機能、コレクターを無効/有効にする機能、ガベージ コレクションを手動でトリガーする機能など、より多くの機能を提供します。

リークがなく、単にメモリ使用量を減らしたい場合は、 を使用して、gc.set_thresholdメモリ使用量が少ないポイントでガベージ コレクションをトリガーしてみてください。

于 2013-07-12T21:26:58.580 に答える
0

このcleanコマンドは、ローカル リポジトリから取得 (ダウンロード) された .deb ファイル (パッケージ) を削除して、ディスク領域を解放するために使用されます。

$ sudo apt-get clean

お役に立てれば!

于 2013-07-12T21:26:48.497 に答える