local tab1, tab2 = {}, {}
local weak = setmetatable({}, { __mode = "kv" })
for i = 1, 5000 do tab1[i] = i end
weak[1] = tab1
print(ll.GetUsedMemory()) -- > 83706
tab1 = nil
print(ll.GetUsedMemory()) -- > 83706
for i = 1, 5000 do tab2[i] = i end
-- > Script run-time error not enough memory
sleeping doesn't work:
local tab1, tab2 = {}, {}
local weak = setmetatable({}, { __mode = "kv" })
for i = 1, 5000 do tab1[i] = i end
weak[1] = tab1
print(ll.GetUsedMemory()) -- > 83741
tab1 = nil
ll.Sleep(3)
print(ll.GetUsedMemory()) -- > 83741
for i = 1, 5000 do tab2[i] = i end
-- > Script run-time error not enough memory
we need to move to another event, this works:
local tab1, tab2 = {}, {}
local weak = setmetatable({}, { __mode = "kv" })
for i = 1, 5000 do tab1[i] = i end
weak[1] = tab1
print(ll.GetUsedMemory()) -- > 83845
tab1 = nil
LLTimers:once(0, function()
print(ll.GetUsedMemory()) -- > 2190
for i = 1, 5000 do tab2[i] = i end
print("ok")
end)
-- > ok