luagc的使用方法

這篇文章主要介紹“l(fā)ua gc的使用方法”,在日常操作中,相信很多人在lua gc的使用方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”lua gc的使用方法”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)為您提適合企業(yè)的網(wǎng)站設(shè)計(jì)?讓您的網(wǎng)站在搜索引擎具有高度排名,讓您的網(wǎng)站具備超強(qiáng)的網(wǎng)絡(luò)競爭力!結(jié)合企業(yè)自身,進(jìn)行網(wǎng)站設(shè)計(jì)及把握,最后結(jié)合企業(yè)文化和具體宗旨等,才能創(chuàng)作出一份性化解決方案。從網(wǎng)站策劃到做網(wǎng)站、網(wǎng)站制作, 我們的網(wǎng)頁設(shè)計(jì)師為您提供的解決方案。

主流的垃圾回收一般都是基于引用計(jì)數(shù)和標(biāo)記清除算法.

從內(nèi)存占用量上來講, 引用計(jì)數(shù)無疑是有優(yōu)勢的, 當(dāng)引用計(jì)數(shù)為0時, 直接就會將相應(yīng)的對象清除, 典型的應(yīng)用就是C++的智能指針. 但是基于引用計(jì)數(shù)的gc有一個壞處, 它無法解決循環(huán)引用問題. 如果A引用B會導(dǎo)致B的引用計(jì)數(shù)+1, B引用A也會導(dǎo)致A的引用計(jì)數(shù)+1, 這樣A,B對象永遠(yuǎn)也不會刪除. 記得在OC中似乎使用了弱引用來解決這個問題, 但總感覺這樣會給代碼中埋下坑.

標(biāo)記清楚算法可以完美的解決循環(huán)引用問題, 其做法是從root遍歷所有可達(dá)的指針, 然后將不可達(dá)的區(qū)域回收. 這樣即使A和B循環(huán)引用, 只是沒有其他對象來引用A和B, 那么A和B對象即是不可達(dá). 此時A和B對象即可刪除. 但是標(biāo)記清除算法有一個致命缺陷, 就是在gc時需要停頓整個程序來進(jìn)行mark-sweep.

最近抽了點(diǎn)時間研究了下go語言, 果然可能是由于太年輕, go也有這個坑. 在搜索資料時發(fā)現(xiàn)很多人都在吐槽go的gc部分, go的主要應(yīng)用領(lǐng)域就是服務(wù)器部分,然而據(jù)說go的gc會造成不可預(yù)知的停頓,這對于服務(wù)器來講是非常致命的.

看到這, 我突然非常擔(dān)心lua也有此問題, 而在silly中也是以lua來寫上層邏輯的, 很擔(dān)心lua中的gc是否也會造成stop-the-world. 于是找來手冊重新認(rèn)真的讀了一下, 發(fā)現(xiàn)以前對于lua的gc的工作方式太想當(dāng)然了, 以致于造成了對lua的錯誤使用.

lua中的gc算法是采用增量標(biāo)記清除算法, 通過一次執(zhí)行一小步來將一次完整的gc時間分?jǐn)傇诿恳徊缴? 提高了整個程序的實(shí)時性.(具體如何做的,還要等看完源碼才知道:D)

在lua中是分為手動gc和自動gc的.

通過設(shè)置垃圾收集器間歇率和垃圾收集器步進(jìn)倍率來控制自動gc的運(yùn)行方式.

有某些特殊的條件下, 如果我們需要手動控制gc的時機(jī), 這時就可以LUA_GCSTOP來停止自動垃圾回收器. 然后在恰當(dāng)?shù)臅r機(jī)手動調(diào)用LUA_GCSTEP來發(fā)起一次增量垃圾回收.

這樣看來, 至少在gc的策略上, lua應(yīng)該做的比go要好. 當(dāng)然具體情況還是要等看完實(shí)現(xiàn)才能更確切的比較.

btw, 作為一門現(xiàn)代語言, gc已經(jīng)是一個不可缺少的部件. 然而gc的問題在于, 在平時開發(fā)時完全體會不到問題, 一旦在大量數(shù)據(jù)面前就有可能會出現(xiàn)各種情況. 因此熟悉一門語言絕不僅僅是熟悉其語法就好了, 還必須要深刻了解該語言的Gc機(jī)制, 才能做到心中有數(shù).

到此,關(guān)于“l(fā)ua gc的使用方法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

文章標(biāo)題:luagc的使用方法
標(biāo)題鏈接:http://muchs.cn/article32/jcpspc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、動態(tài)網(wǎng)站軟件開發(fā)服務(wù)器托管面包屑導(dǎo)航虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管