Mock 32 #1 Posted August 7, 2010 (edited) Eu tava falando com socket agora no msn sobre uma função chamada newproxy, e falmos sobre a collectgarbage ai nem eu e nem ele sabiamos usar collectgarbage() entao fui procurar e descobri. Supondo que temos isso: local f = string.rep('a',1024*500*10) print(f:len()) prit - > 5120000 vai ocupar cerca de 17mb de ram do pc. E entao se fizermos isso: local f = string.rep('a',1024*500*10) print(f:len()) f = nil Não vai mudar nada. Mas se fiermos isso: local f = string.rep('a',1024*500*10) print(f:len()) f = nil collectgarbage() O uso de ram cai pra 2mb :coolface: Não limpa tudo mais de 17mb pra 2 é muito \o Agora isso é tenso: do local a = newproxy(true) -- create proxy object with new metatable assert(type(a) == 'userdata') getmetatable(a).__len = function() return 5 end assert(#a == 5) local b = newproxy(a) -- create proxy object with same metatable as another proxy assert(b ~= a) assert(getmetatable( == getmetatable(a)) assert(#b == 5) local c = newproxy(false) -- create proxy object with no metatable assert(not getmetatable(c)) local is_collected = false local o = newproxy(true) getmetatable(o).__gc = function() is_collected = true end -- finalizer o = nil; collectgarbage() -- clear all references to object and ensure finalizer called assert(is_collected) end Não entendi direito pra que serve a newproxy, pelo que eu vi ela cria uma userdata com tamanho 0 http://lua-users.org/wiki/HiddenFeatures Edited January 23, 2011 by Mickfern Share this post Link to post Share on other sites
Dartier 0 #2 Posted August 7, 2010 oloco isso é o uso de ram que o script consome ou geral do pc? se ele diminuir o geral ia ser f0da Share this post Link to post Share on other sites
Mock 32 #3 Posted August 7, 2010 O consumo do script e nao do pc Share this post Link to post Share on other sites
Conde2 0 #4 Posted August 8, 2010 (edited) @Mock Já tentou fazer isso: local f = string.rep('a',1024*500*10) print(f:len()) _G[f] = nil Acho que isso simularia o collectgarbage() Edited January 23, 2011 by Mickfern Share this post Link to post Share on other sites
Mock 32 #5 Posted August 8, 2010 1º se é local n tem como tar na _G 2º N adianta nd Share this post Link to post Share on other sites
100email 0 #6 Posted August 8, 2010 prit - > 5120000vai ocupar cerca de 17mb de ram do pc. comu funssiona iço moq kuantus numerosinhus tein ki ser pa okupa 1 mb? Share this post Link to post Share on other sites