Lua
Garbage collector e tavoli deboli
Ricerca…
Sintassi
- collectgarbage (gcrule [, gcdata]): raccoglie i rifiuti usando gcrule
- setmetatable (tab, {__mode = weakmode}) - imposta la modalità debole della scheda su weakmode
Parametri
parametro | dettagli |
---|---|
gcrule e gcdata | Azione su gc (garbage collector): "stop" (interruzione della raccolta), "restart" (ricomincia a raccogliere), "collect" o nil (raccogli tutti i rifiuti), "step" (esegui un passo di raccolta), "count" ( conteggio di ritorno della memoria utilizzata in KB), "setpause" e dati sono numeri da 0 % a 100 % (imposta il parametro di pausa di gc), "setstepmul" ei dati sono numeri da 0 % a 100 (imposta "stepmul" per gc) . |
weakmode | Tipo di tabella debole: "k" (solo chiavi deboli), "v" (solo valori deboli), "vk" (chiavi e valori deboli) |
Tavoli deboli
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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow