私はかなり長い間Pythonを使用してきましたが、ガベージコレクション、メモリ管理、および変数の削除とメモリの解放に関する実際の問題のいくつかの問題について混乱しています。
>>> pop = range(1000)
>>> p = pop[100:700]
>>> del pop[:]
>>> pop
[]
>>> p
[100.. ,200.. 300...699]
上記のコードでは、これが発生します。だが、
>>> pop = range(1000)
>>> k = pop
>>> del pop[:]
>>> pop
[]
>>> k
[]
ここで2番目のケースでは、kがリスト'pop'を指していることを意味します。
質問の最初の部分:
しかし、最初のコードブロックで何が起こっているのでしょうか?[100:700]要素を含むメモリは削除されませんか、それともリスト'p'の作成時に複製されますか?
質問の2番目の部分:
また、可能な限りgc.enableステートメントとgc.collectステートメントを間に入れてみましたが、両方のコードでメモリ使用率に変化はありません。これはちょっと不可解です。Pythonが空きメモリをOSに戻さないのは悪いことではありませんか?私が行った小さな研究で私が間違っている場合は、私を訂正してください。前もって感謝します。