Lua
Garbage Collector et tables faibles
Recherche…
Syntaxe
- collectgarbage (gcrule [, gcdata]) - Collecte les ordures en utilisant gcrule
- setmetatable (tab, {__mode = strongmode}) - Définit le mode faible de l'onglet sur faiblesse
Paramètres
paramètre | détails |
---|---|
gcrule & gcdata | Action vers gc (garbage collector): "stop" (arrête la collecte), "restart" (recommence à collecter), "collect" ou nil (collecte de tous les déchets), "step" (fait une étape de collecte), "count" ( retourne le nombre de mémoires utilisées en Ko), "setpause" et les données sont "setpause" entre 0 % et 100 % (paramètre de pause de gc), "setstepmul" et les données sont "setstepmul" entre 0 % et 100 (définissez "stepmul" pour gc) . |
mode faible | Type de tableau faible: "k" (uniquement les clés faibles), "v" (uniquement les valeurs faibles), "vk" (clés et valeurs faibles) |
Tables faibles
local t1, t2, t3, t4 = {}, {}, {}, {} -- Create 4 tables
local maintab = {t1, t2} -- Regular table, strong references to t1 and t2
local weaktab = setmetatable({t1, t2, t3, t4}, {__mode = 'v'}) -- table with weak references.
t1, t2, t3, t4 = nil, nil, nil, nil -- No more "strong" references to t3 and t4
print(#maintab, #weaktab) --> 2 4
collectgarbage() -- Destroy t3 and t4 and delete weak links to them.
print(#maintab, #weaktab) --> 2 2
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow