diff options
author | 最萌小汐 <sumneko@hotmail.com> | 2018-12-14 10:36:28 +0800 |
---|---|---|
committer | 最萌小汐 <sumneko@hotmail.com> | 2018-12-14 10:36:28 +0800 |
commit | 96574328fd631b8fd3b875517a0ed258db568064 (patch) | |
tree | 6fb7d6e4db5a9edf5a7caf4c77f8db02b3805d2e /server/src | |
parent | 157ee63a68b6994928863d0abe61e736a7452e7f (diff) | |
download | lua-language-server-96574328fd631b8fd3b875517a0ed258db568064.zip |
手动回收垃圾
Diffstat (limited to 'server/src')
-rw-r--r-- | server/src/service.lua | 69 |
1 files changed, 42 insertions, 27 deletions
diff --git a/server/src/service.lua b/server/src/service.lua index 08c205cf..899dbb57 100644 --- a/server/src/service.lua +++ b/server/src/service.lua @@ -108,13 +108,15 @@ function mt:_doDiagnostic() end end local passed = os.clock() - clock - log.debug(('\n\z - Diagnostics completion\n\z - Cost: [%.3f]sec\n\z - Num: [%d]'):format( - passed, - count - )) + if passed > 0.01 then + log.debug(('\n\z + Diagnostics completion\n\z + Cost: [%.3f]sec\n\z + Num: [%d]'):format( + passed, + count + )) + end end function mt:_buildTextCache() @@ -133,26 +135,17 @@ function mt:_buildTextCache() size = size + #obj.text end local passed = os.clock() - clock - - local sum = 0 - for _ in pairs(self._file) do - sum = sum + 1 - end - log.debug(('\n\z - Cache completion\n\z - Cost: [%.3f]sec\n\z - Num: [%d]\n\z - Size: [%.3f]kb\n\z - Speed:[%.3f]kb/s\n\z - Mem: [%.3f]kb\n\z - Sum: [%d]'):format( - passed, - #list, - size / 1000, - size / passed / 1000, - collectgarbage 'count', - sum - )) + if passed > 0.01 then + log.debug(('\n\z + Cache completion\n\z + Cost: [%.3f]sec\n\z + Num: [%d]\n\z + Size: [%.3f]kb'):format( + passed, + #list, + size / 1000 + )) + end end function mt:read(mode) @@ -227,6 +220,26 @@ function mt:on_tick() end self:_buildTextCache() self:_doDiagnostic() + + if os.clock() - self._clock >= 60 then + self._clock = os.clock() + local count = 0 + for _ in pairs(self._file) do + count = count + 1 + end + local last_mem = collectgarbage 'count' + collectgarbage() + local mem = collectgarbage 'count' + log.debug(('\n\z + collectgarbage\n\z + Mem: [%.3f]kb\n\z + Cache: [%d]\n\z + GC: [%.3f]kb'):format( + mem, + count, + last_mem - mem + )) + end end function mt:listen() @@ -245,10 +258,12 @@ function mt:listen() end return function () + collectgarbage 'stop' local session = setmetatable({ _file = {}, _needCompile = {}, _needDiagnostics = {}, + _clock = -100, }, mt) return session end |