【Python面試真題】-Python是如何進行內存管理的?
【Python面試真題】-Python是如何進行內存管理的?
Python引用了一個內存池(memory pool)機制,即Pymalloc機制(malloc:n.分配內存),用于管理對小塊內存的申請和釋放
內存池(memory pool)的概念:
當創建大量消耗小內存的對象時,頻繁調用new/malloc會導致大量的內存碎片,致使效率降低。內存池的概念就是預先在內存中申請一定數量的,大小相等 的內存塊留作備用,當有新的內存需求時,就先從內存池中分配內存給這個需求,不夠了之后再申請新的內存。這樣做最顯著的優勢就是能夠減少內存碎片,提升效率。
內存池的實現方式有很多,性能和適用范圍也不一樣。
Python中的內存管理機制——Pymalloc:
Python中的內存管理機制都有兩套實現,一套是針對小對象,就是大小小于256bits時,pymalloc會在內存池中申請內存空間;當大于256bits,則會直接執行new/malloc的行為來申請內存空間。
關于釋放內存方面,當一個對象的引用計數變為0時,Python就會調用它的析構函數。在析構時,也采用了內存池機制,從內存池來的內存會被歸還到內存池中,以避免頻繁地釋放動作。