Pymalloc
Python實(shí)現(xiàn)了一個內(nèi)存池(memorypool)機(jī)制,使用Pymalloc對小塊內(nèi)存(小于等于256kb)進(jìn)行申請和釋放管理。
當(dāng)Python頻繁地創(chuàng)建和銷毀一些小的對象時,底層會多次重復(fù)調(diào)用malloc和free等函數(shù)進(jìn)行內(nèi)存分配。這不僅會引入較大的系統(tǒng)開銷,而且還可能產(chǎn)生大量的內(nèi)存碎片。
內(nèi)存池的概念就是預(yù)先在內(nèi)存中申請一定數(shù)量的內(nèi)存空間,當(dāng)有有滿足條件的內(nèi)存請求時,就先從內(nèi)存池中分配內(nèi)存給這個需求,如果預(yù)先申請的內(nèi)存已經(jīng)耗盡,Pymallocallocator會再申請新的內(nèi)存(不能超過預(yù)先設(shè)置的內(nèi)存池最大容量)。垃圾回收時,回收的內(nèi)存歸還給內(nèi)存池。這樣做最顯著的優(yōu)勢就是能夠減少內(nèi)存碎片,提升效率。
如果應(yīng)用的內(nèi)存需求大于pymalloc設(shè)置的閾值,那么解釋器再將這個請求交給底層的C函數(shù)(malloc/realloc/free等)來實(shí)現(xiàn)。
以上內(nèi)容為大家介紹了Python內(nèi)存管理機(jī)制之Pymalloc,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://www.em-kal.com/