1
私は巨大なリスト/配列を作成した場合は、巨大なリスト/配列を再割り当てするとメモリリークが発生しますか?
a=range(1000000000)
or
a=numpy.ones(100000000)
が、私は再割り当て言う:
この再割り当てした後a=1
は、前の巨大なリストや配列が自動的に削除されます、または内部にループがあると潜在的なメモリが枯渇する可能性がありますか?
私は巨大なリスト/配列を作成した場合は、巨大なリスト/配列を再割り当てするとメモリリークが発生しますか?
a=range(1000000000)
or
a=numpy.ones(100000000)
が、私は再割り当て言う:
この再割り当てした後a=1
は、前の巨大なリストや配列が自動的に削除されます、または内部にループがあると潜在的なメモリが枯渇する可能性がありますか?
正常にガベージコレクトされますが、少し時間がかかります。しかし、メモリリークは発生しません(または、そうでなければ、報告すべきnumpyモジュールにバグがあります)。
+1参照カウントを仮定すると、修正され、トラップには入りません。大文字小文字の区別: 'numpypy'はまだ完全ではありませんが、サンプルコードはPyPyで既に動作しています(実際のプログラムも近い将来にはうまくいくでしょう)。 – delnan
少なくともcpythonは空き整数と浮動小数点をキャッシュしませんか?参照:http://effbot.org/pyfaq/why-doesnt-python-release-the-memory-when-i-delete-a-large-object.htm –
@RolandSmithはい、しかしnumpyの配列は実際には含まれていません何百万ものPythonオブジェクトが存在します(そのため、通常のリストよりも効率的です)。 – delnan