他のメモリ集約型操作を実行する前に、ガベージコレクションオブジェクトをクリアするにはどうすればよいですか?または、メモリがいっぱいになると自動的に実行されますか?Pythonメモリの制限?限界に近づくとGCがクリアされますか?
Python(+ Eclipse)が2GB(Win32)でメモリ例外をスローするのはなぜ、実際にはまだメモリがWindowsでは使用されていないように見えるのですか?どこにでも限界がありますか?
他のメモリ集約型操作を実行する前に、ガベージコレクションオブジェクトをクリアするにはどうすればよいですか?または、メモリがいっぱいになると自動的に実行されますか?Pythonメモリの制限?限界に近づくとGCがクリアされますか?
Python(+ Eclipse)が2GB(Win32)でメモリ例外をスローするのはなぜ、実際にはまだメモリがWindowsでは使用されていないように見えるのですか?どこにでも限界がありますか?
gc
モジュールを使用してガベージコレクタのパフォーマンスを調整することができます(たとえば、gc.set_threshold
)。または、ごみを手動で収集することができます。gc.collect
。しかし、私は、ほとんどの場合、オブジェクトはrefcountがゼロになるとすぐに収集されると信じています。
refnountが0にならないように循環参照がある場合、(thanks delnan!)ガベージコレクションは、それを明示するためにのみ問題になります。また
注gc
ドキュメントからこのライン:
が漏れプログラム呼び出し
gc.set_debug(gc.DEBUG_LEAK)
をデバッグします。
CPythonがガベージコレクタと呼ぶのは、循環参照用の単なるGCです。サイクルに入っていないすべてのオブジェクトは、到達不能になるとすぐに参照カウントによって処理されます。もちろん、彼らは到達不能になり、もはや必要としない参照を保持していません。 – delnan
このような高いメモリ使用量が予想されるのですか、それともメモリリークですか?後者の場合、GCが役に立たない場合は、自分で漏れを見つけて修正する必要があります。 – delnan
その場合は、すべてのデータを一度にロードするのではなく、ハードドライブ上の長いビットを参照するだけの高度な機能について考えることにします。 – Gerenuk