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