最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Lua中釋放table占用內存的方法

 更新時間:2015年04月23日 10:58:36   投稿:junjie  
這篇文章主要介紹了Lua中釋放table占用內存的方法,本文講解了兩種釋放內存的方法,需要的朋友可以參考下

table的大小是動態(tài)變化的??慈缦麓a:

復制代碼 代碼如下:

tb = {1,2,3} --數組大小4,hash表大小1(不管hash表有沒有存數據,它的大小最小為1) 
 
tb[5] = 5 
tb[100] = 100 --數組大小4,hash表大小2 

因為后插入的兩個數的key過于離散,所以它們被保存到hash表中。最終tb的大小為4+2=6。
這時我們對table進行刪除操作:

復制代碼 代碼如下:

tb[1] = nil 
tb[2] = nil 
tb[3] = nil 
tb[5] = nil 
tb[100] = nil 

這時tb里面沒有數據了,但tb的大小還是6,tb占用的內存空間并沒有釋放!
這里提供兩種方式來釋放tb所占的內存空間。

第一種:

將tb設為nil,然后等垃圾收集或強制執(zhí)行一次垃圾收集(collectgarbage)。

第二種:

用一個之前沒用過的key對tb的內容賦nil值。要找一個未使用過的key很簡單,直接構造一個table當key就可以了,比如tb[{}]=nil。

第一種是正規(guī)的做法,第二種只是一種演示,不實用。

下面解釋一下第二種方法為什么能釋放table占用的內存空間。

只有兩種情況會設置table的大小,一種是構造table的時候,一種是用一個新key向table插入一個值的時候。

前者不用解釋,那是必須的。后者是為了提高table中array的利用率而進行的優(yōu)化。

當向table插入一個新值時,lua會計算新值插入后整個table中array與hash的情況(有些值被設nil,有些值從hash移到array),

重新計算變化后的table,算出新的array與hash的大小,重新分配空間。

所以,盡管上面tb中的所有值都是nil,但由于沒有向table插入一個新值,沒有觸發(fā)table的重新分配,所以空間并沒有釋放。

PS:為什么用一個老key沒效果呢?這是因為老key對應的table空間還在,lua會直接使用老空間而不去計算新空間。

相關文章

  • Lua select函數用法實例

    Lua select函數用法實例

    這篇文章主要介紹了Lua select函數用法實例,本文直接給出代碼實例,并講解了select函數的使用技巧,需要的朋友可以參考下
    2015-04-04
  • lua中操作json數據的方法

    lua中操作json數據的方法

    這篇文章主要介紹了lua中操作json數據的方法,本文講解使用cjson包操作JSON數據,并給出了操作實例,需要的朋友可以參考下
    2015-04-04
  • Lua中函數與面向對象編程的基礎知識整理

    Lua中函數與面向對象編程的基礎知識整理

    函數在面對對象的編程中又被叫做方法,會受到作用域的制約,Lua中具有類等面向對象的特性,接下來我們就來看一下Lua中函數與面向對象編程的基礎知識整理
    2016-06-06
  • Nginx+lua 實現(xiàn)調用.so文件

    Nginx+lua 實現(xiàn)調用.so文件

    本文給大家分享的是Nginx結合lua 實現(xiàn)調用.so動態(tài)鏈接庫文件的方法和示例,有需要的小伙伴可以參考下
    2017-05-05
  • Lua的內存管理淺析

    Lua的內存管理淺析

    這篇文章主要介紹了Lua的內存管理淺析,本文講解了內存管理的相關知識,同時講解了垃圾收集器的機制,需要的朋友可以參考下
    2014-09-09
  • Lua中的數學庫總結

    Lua中的數學庫總結

    這篇文章主要介紹了Lua中的數學庫總結,本文羅列了Lua5.1中數學庫的所有函數,需要的朋友可以參考下
    2014-11-11
  • Lua實現(xiàn)split函數

    Lua實現(xiàn)split函數

    這篇文章主要介紹了Lua實現(xiàn)split函數,lua中沒有split分割字條串函數,本文使用自定義函數實現(xiàn),需要的朋友可以參考下
    2015-04-04
  • Lua腳本語言簡介

    Lua腳本語言簡介

    這篇文章主要介紹了Lua腳本語言簡介,Lua最著名的應用是在暴雪公司的網絡游戲WOW中, Lua腳本可以很容易的被C/C++代碼調用,也可以反過來調用C/C++的函數,這使得Lua在應用程序中可以被廣泛應用,本文就是對Lua語言的詳細介紹,需要的朋友可以參考下
    2014-09-09
  • Lua math.fmod使用時的小數問題

    Lua math.fmod使用時的小數問題

    這篇文章主要介紹了Lua math.fmod使用時的小數問題,math.fmod用于取模運算,使用小數時可能會遇到不可預料的結果,所以應該避免使用小數,需要的朋友可以參考下
    2015-06-06
  • 詳解Lua中的變量相關知識點

    詳解Lua中的變量相關知識點

    這篇文章主要介紹了Lua中的變量相關知識點,是Lua入門中的基礎知識,需要的朋友可以參考下
    2015-05-05

最新評論

台江县| 高碑店市| 鞍山市| 五寨县| 苏尼特左旗| 赤壁市| 什邡市| 临夏市| 城步| 山东| 水富县| 绵阳市| 会宁县| 马边| 湘潭市| 京山县| 柳林县| 札达县| 民县| 深水埗区| 巴中市| 屏东县| 刚察县| 松阳县| 崇阳县| 许昌市| 河池市| 临夏县| 六盘水市| 宁海县| 揭阳市| 申扎县| 阿坝| 佛山市| 东莞市| 南康市| 安徽省| 朝阳区| 华蓥市| 赤壁市| 霍邱县|