009 Pythonの変数のメモリ管理

まず、変数預金いますか?

x = 10

メモリに保存された変数は、それは広すぎた、と我々はそれが特定置きます。

この大容量メモリコンピュータのメモリの場合は、変数のすべての定義は、変数名X(家の番号)に、小さなスペースにこの大容量メモリに開く小さなスペースと10の変数値を格納し、その後、この小さなメモリ空間になる、10のポイントをxは。

二、Pythonのガベージコレクション

私たちは、コードの一部を追加した場合p1.pyために、x = 11大きなメモリ・ストレージ・スペースは、xが、あるため、xの前に、それほど大きなメモリを別の小さな変数値11、変数xのバインド別の家の番号の値が開かれると持ち上げます接続10、その結果、Xおよび11。この時間目がゴミのpythonになるので、PythonはPythonのガベージコレクションのメカニズムである10によって占有されていたメモリを、このゴミを扱うリリースする予定、何家屋番号10がないので。他の言語を手動で解除する必要がありますが、メモリは10アウトを占めていました。

2.1参照カウント

上記の説明から、我々は限り家の数としてバインディング変数の値を知ることができ、それは変数の値は、家の番号にバインドされていないのに対し、この変数の値はゴミで、Pythonは自動的にゴミをクリーンアップします、ゴミではありません。ここでは、この家の番号が呼ばれ、Pythonで与えられた家屋番号、プロの解釈のためのカウントを参照してください。

x = 10  # 10引用计数加1为1
y = x  # 10引用计数加1为2
x = 11  # 10引用计数减1为1;11引用计数加1为1
del y  # 10引用计数减1为0,触发python垃圾回收机制,python清理10的内存占用

コードは、参照カウントの加算および減算する処理です。

第三に、小さな整数プール

同じ値がメモリ空間に起因するアプリケーションの効率、出発プール小さな整数の範囲作成Pythonインタプリタ[-5256]繰り返される作成を避けるために、オブジェクトの範囲内の小さな整数グローバルインタプリタであります範囲内で再利用され、ガベージコレクションが回収されることはありません。

# 因此当变量值在【-5:256】这个区间内,只要变量值相同,内存地址都一样

あなたはPythonでpycharmでプログラムを実行すると、パフォーマンス上の理由からpycharmが、他の不変のタイプにも契約が同じようになります含まれているなど、小さな整数、文字列、のプールの範囲を拡大していきます、私たちは覚えておく必要がありますこれは、慎重に検討しない範囲どのくらいの終わりのように、ライブ最適化のメカニズムです。

おすすめ

転載: www.cnblogs.com/XuChengNotes/p/11265031.html
009