python內(nèi)存管理

  • python是動(dòng)態(tài)類型,對(duì)象是用于存儲(chǔ)數(shù)據(jù)低散。在python中俯邓,各種數(shù)字,字符串熔号,列表稽鞭,字典都是對(duì)象,相當(dāng)于java的變量
  • 引用引镊,python程序中寫的對(duì)象名朦蕴,指向?qū)ο?/li>
  • 引用和對(duì)象分離,是動(dòng)態(tài)類型的核心
Python是怎樣管理內(nèi)存

Python的內(nèi)存管理是由私有heap空間管理的弟头。所有的Python對(duì)象和數(shù)據(jù)結(jié)構(gòu)都在一個(gè)私有heap中吩抓。程序員沒有訪問該heap的權(quán)限,只有解釋器才能對(duì)它進(jìn)行操作赴恨。為Python的heap空間分配內(nèi)存是由Python的內(nèi)存管理模塊進(jìn)行的疹娶,其核心API會(huì)提供一些訪問該模塊的方法供程序員使用。Python有自帶的垃圾回收系統(tǒng)嘱支,它回收并釋放沒有被使用的內(nèi)存蚓胸,讓它們能夠被其他程序使用。

a= 3      #a是引用除师,指向?qū)ο?.     3是存儲(chǔ)內(nèi)存中的一個(gè)整數(shù)對(duì)象
引用計(jì)數(shù)
x=3.14
y=x
Paste_Image.png

如圖沛膳,內(nèi)存創(chuàng)建一個(gè)浮點(diǎn)型對(duì)象-3.14,然后將引用x指向于對(duì)象3.14汛聚,對(duì)象3.14的引用計(jì)數(shù)就是1锹安,語(yǔ)句y=x,則是創(chuàng)建了一個(gè)指向同一個(gè)對(duì)象的引用別名y倚舀,同時(shí)對(duì)象3.14的引用計(jì)數(shù)就是2.

x=3.14
y=x
x=4
y=5

上面的對(duì)象3.14的引用計(jì)數(shù)是0叹哭,會(huì)被清空


Paste_Image.png
python內(nèi)存池機(jī)制
Paste_Image.png

第0層是C中的malloc,free等內(nèi)存分配和釋放函數(shù)進(jìn)行操作痕貌;
 第1層和第2層是內(nèi)存池风罩,有Python的接口函數(shù)PyMem_Malloc函數(shù)實(shí)現(xiàn),當(dāng)對(duì)象小于256K時(shí)有該層直接分配內(nèi)存舵稠;
 第3層是最上層超升,也就是我們對(duì)Python對(duì)象的直接操作入宦;
  在 C 中如果頻繁的調(diào)用 malloc 與 free 時(shí),是會(huì)產(chǎn)生性能問題的.再加上頻繁的分配與釋放小塊的內(nèi)存會(huì)產(chǎn)生內(nèi)存碎片. Python 在這里主要干的工作有:
   如果請(qǐng)求分配的內(nèi)存在1~256字節(jié)之間就使用自己的內(nèi)存管理系統(tǒng),否則直接使用 malloc.這里還是會(huì)調(diào)用 malloc 分配內(nèi)存,但每次會(huì)分配一塊大小為256k的大塊內(nèi)存.
  經(jīng)由內(nèi)存池登記的內(nèi)存到最后還是會(huì)回收到內(nèi)存池,并不會(huì)調(diào)用 C 的 free 釋放掉.以便下次使用.對(duì)于簡(jiǎn)單的Python對(duì)象,例如數(shù)值室琢、字符串乾闰,元組(tuple不允許被更改)采用的是復(fù)制的方式(深拷貝?),也就是說(shuō)當(dāng)將另一個(gè)變量B賦值給變量A時(shí)盈滴,雖然A和B的內(nèi)存空間仍然相同涯肩,但當(dāng)A的值發(fā)生變化時(shí),會(huì)重新給A分配空間巢钓,A和B的地址變得不再相同

Paste_Image.png
python 垃圾回收機(jī)制

python的垃圾回收以引用計(jì)數(shù)為主病苗,標(biāo)記-清除和分代收集為輔。print gc.collect()可以看到python的垃圾

python中到底是“傳引用”還是“傳值”呢

python中根據(jù)對(duì)象的可變性來(lái)取決于“傳引用”還是“傳值”竿报。對(duì)象的可變性取決于對(duì)象類型

  • 基本類型(整型)铅乡,字符串、元組 屬于不可變對(duì)象
  • 列表烈菌、字典阵幸、類以及類的實(shí)例 屬于可變對(duì)象

本文引用:
http://www.cnblogs.com/CBDoctor/p/3781078.html
http://www.reibang.com/p/6226016cb327

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市芽世,隨后出現(xiàn)的幾起案子挚赊,更是在濱河造成了極大的恐慌,老刑警劉巖济瓢,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荠割,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡旺矾,警方通過(guò)查閱死者的電腦和手機(jī)蔑鹦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)箕宙,“玉大人嚎朽,你說(shuō)我怎么就攤上這事〖砼粒” “怎么了哟忍?”我有些...
    開封第一講書人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)陷寝。 經(jīng)常有香客問我锅很,道長(zhǎng),這世上最難降的妖魔是什么凤跑? 我笑而不...
    開封第一講書人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任爆安,我火速辦了婚禮,結(jié)果婚禮上仔引,老公的妹妹穿的比我還像新娘扔仓。我一直安慰自己致扯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開白布当辐。 她就那樣靜靜地躺著,像睡著了一般鲤看。 火紅的嫁衣襯著肌膚如雪缘揪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,785評(píng)論 1 290
  • 那天义桂,我揣著相機(jī)與錄音找筝,去河邊找鬼。 笑死慷吊,一個(gè)胖子當(dāng)著我的面吹牛袖裕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播溉瓶,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼急鳄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了堰酿?” 一聲冷哼從身側(cè)響起疾宏,我...
    開封第一講書人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎触创,沒想到半個(gè)月后坎藐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡哼绑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年岩馍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抖韩。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蛀恩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帽蝶,到底是詐尸還是另有隱情赦肋,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布励稳,位于F島的核電站佃乘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏驹尼。R本人自食惡果不足惜趣避,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望新翎。 院中可真熱鬧程帕,春花似錦住练、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至岭埠,卻和暖如春盏混,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背惜论。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工许赃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人馆类。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓混聊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親乾巧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子句喜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 在比較淺層次上我們通過(guò)說(shuō)明如下問題來(lái)進(jìn)一步深入了解python內(nèi)存管理機(jī)制:Python中到底是“傳引用”還是“傳...
    tdeblog閱讀 2,488評(píng)論 0 0
  • 雖然很早知道python是利用引用計(jì)數(shù)來(lái)進(jìn)行內(nèi)存管理,但是具體的細(xì)節(jié)并不明白卧抗,網(wǎng)上查了查相關(guān)資料藤滥,整理一下 查詢引...
    核桃啊閱讀 701評(píng)論 0 1
  • 內(nèi)存是計(jì)算機(jī)非常關(guān)鍵的部件之一,是暫時(shí)存儲(chǔ)程序以及數(shù)據(jù)的空間社裆,CPU只有有限的寄存器可以用于 存儲(chǔ)計(jì)算數(shù)據(jù)拙绊,而大部...
    dreamer_lk閱讀 1,192評(píng)論 2 10
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項(xiàng)目接著寫寫一名3年工作經(jīng)驗(yàn)的J...
    燕京博士閱讀 7,557評(píng)論 1 118
  • 雖然不愛了,但還是小心眼泳秀。這話怎么講标沪?是這樣的:2016年3月15日發(fā)了女朋友的照片,當(dāng)時(shí)的我內(nèi)心想法特簡(jiǎn)單嗜傅,得不...
    在你不知道的時(shí)間裡愛你很久閱讀 109評(píng)論 0 1