7 Python是如何進行記憶體管理的? http://developer.51cto.com/art/201007/213585.htm Python引用了一個記憶體池(memory pool)機制,即Pymalloc機制(malloc:n.分配記憶體),用於管理對小塊記憶體的申請和釋放 記憶體池(memo ...
7 Python是如何進行記憶體管理的?
http://developer.51cto.com/art/201007/213585.htm
Python引用了一個記憶體池(memory pool)機制,即Pymalloc機制(malloc:n.分配記憶體),用於管理對小塊記憶體的申請和釋放
記憶體池(memory pool)的概念:
當 創建大量消耗小記憶體的對象時,頻繁調用new/malloc會導致大量的記憶體碎片,致使效率降低。記憶體池的概念就是預先在記憶體中申請一定數量的,大小相等 的記憶體塊留作備用,當有新的記憶體需求時,就先從記憶體池中分配記憶體給這個需求,不夠了之後再申請新的記憶體。這樣做最顯著的優勢就是能夠減少記憶體碎片,提升效率。
記憶體池的實現方式有很多,性能和適用範圍也不一樣。
python中的記憶體管理機制——Pymalloc:
python中的記憶體管理機制都有兩套實現,一套是針對小對象,就是大小小於256bits時,pymalloc會在記憶體池中申請記憶體空間;當大於256bits,則會直接執行new/malloc的行為來申請記憶體空間。
關於釋放記憶體方面,當一個對象的引用計數變為0時,python就會調用它的析構函數。在析構時,也採用了記憶體池機制,從記憶體池來的記憶體會被歸還到記憶體池中,以避免頻繁地釋放動作。
8 解釋一下python的and-or語法
http://www.kuqin.com/diveinto_python_document/apihelper_andor.html
與C表達式 bool ? a : b類似,但是bool and a or b,當 a 為假時,不會象C表達式 bool ? a : b 一樣工作
本文首發於Python黑洞網,博客園同步跟新