內(nèi)存管理對于編寫出高效率的Windows程序是非常重要的,這是因為Windows是多任務系統(tǒng),它的內(nèi)存管理和單任務的DOS相比有很大的差異。那么python如何進行內(nèi)存管理呢?
ython怎么內(nèi)存管理
內(nèi)存管理
包括:
變量無須事先聲明
變量無須指定類型
不用關心內(nèi)存管理
變量名會被"回收"
del 語句能夠直接釋放資源
變量定義
python中, 變量在第一次被賦值時自動聲明, 和其它語言一樣, 變量只有被創(chuàng)建和賦值后才能被使用
動態(tài)類型
變量名無須事先聲明, 也無須類型聲明
對象的類型和內(nèi)存占用都是運行時確定的
內(nèi)存分配
python解釋器會自動進行內(nèi)存管理, 不用開發(fā)人員去關心
引用計數(shù)
要保持追蹤內(nèi)存中的狀態(tài), python使用了引用計數(shù), 就是python內(nèi)部記錄著所有使用中的對象各有多少引用.
一個內(nèi)部跟蹤變量, 稱為一個引用計數(shù)器, 至于每個對象各有多少引用, 簡稱引用計數(shù), 當對象被創(chuàng)建時, 就創(chuàng)建了一個引用計數(shù), 當這個對象不再需要時, 也就是說, 這個對象的引用計數(shù)變?yōu)?時, 它被垃圾回收
增加引用計數(shù)
當對象被創(chuàng)建賦值給變量時, 該對象的引用計數(shù)就被設置為1
當同一個對象又被賦值給其他變量時, 或作為參數(shù)傳遞給函數(shù), 方法或類實例時, 或者被賦值為一個窗口對象的成員時, 該對象的一個新的引用, 或者作為別名, 就被創(chuàng)建.
減少引用計數(shù)
當對象的引用被銷毀時, 引用計數(shù)會減少, 明顯的例子就是當引用離開其作用范圍時, 這種情況最經(jīng)常出現(xiàn)在函數(shù)運行結(jié)束時, 所有局部變量都被自動銷毀, 對象的引用計數(shù)也就減少
垃圾收集
不再被使用的內(nèi)存會被一種稱為垃圾收集的機制釋放
注: 解釋器跟蹤對象的引用計數(shù), 垃圾回收機制負責釋放內(nèi)存, 垃圾收集器是一塊獨立代碼, 它用來尋找引用計數(shù)為0的對象, 它也負責檢查雖然引用計數(shù)大于0但是也應該被銷毀的對象
引用語義: python中在變量里保存值(對象)的引用, 采用這種方式, 變量所需的存儲空間大小一致, 因為其只需要保存一個引用
值語義變量的值直接保存在變量的存儲區(qū)里, 這樣一個整數(shù)類型的變量就需要保存一個整數(shù)所需的空間, 一個浮點數(shù)變量就需要足夠的空間存儲一個浮點數(shù). C中就是值語義
初級會計職稱中級會計職稱經(jīng)濟師注冊會計師證券從業(yè)銀行從業(yè)會計實操統(tǒng)計師審計師高級會計師基金從業(yè)資格稅務師資產(chǎn)評估師國際內(nèi)審師ACCA/CAT價格鑒證師統(tǒng)計資格從業(yè)
一級建造師二級建造師消防工程師造價工程師土建職稱房地產(chǎn)經(jīng)紀人公路檢測工程師建筑八大員注冊建筑師二級造價師監(jiān)理工程師咨詢工程師房地產(chǎn)估價師 城鄉(xiāng)規(guī)劃師結(jié)構工程師巖土工程師安全工程師設備監(jiān)理師環(huán)境影響評價土地登記代理公路造價師公路監(jiān)理師化工工程師暖通工程師給排水工程師計量工程師
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級職稱護士資格證初級護師主管護師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實踐技能內(nèi)科主治醫(yī)師外科主治醫(yī)師中醫(yī)內(nèi)科主治兒科主治醫(yī)師婦產(chǎn)科醫(yī)師西藥士/師中藥士/師臨床檢驗技師臨床醫(yī)學理論中醫(yī)理論