// vim: et:ts=4:sw=4:sts=4:ft=javascript Ox.GarbageCollection = (function() { var that = function() { collect(); }; setInterval(collect, 60000); function collect() { var len = Ox.len(Ox.UI.elements); Object.keys(Ox.UI.elements).forEach(function(id) { if ( Ox.UI.elements[id] && Ox.isUndefined(Ox.UI.elements[id].$element.data('oxid')) ) { Ox.UI.elements[id].remove(); delete Ox.UI.elements[id]; } }); Ox.Log('GC', len, '-->', Ox.len(Ox.UI.elements)); } that.debug = function() { var classNames = {}, sorted = []; Ox.forEach(Ox.UI.elements, function(element, id) { var className = element.$element[0].className; classNames[className] = (classNames[className] || 0) + 1; }); Ox.forEach(classNames, function(count, className) { sorted.push({className: className, count: count}); }) return sorted.sort(function(a, b) { return a.count - b.count; }).map(function(v) { return v.count + ' ' + v.className }).join('\n'); }; return that; }());