summaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
author最萌小汐 <sumneko@hotmail.com>2018-12-14 10:36:28 +0800
committer最萌小汐 <sumneko@hotmail.com>2018-12-14 10:36:28 +0800
commit96574328fd631b8fd3b875517a0ed258db568064 (patch)
tree6fb7d6e4db5a9edf5a7caf4c77f8db02b3805d2e /server/src
parent157ee63a68b6994928863d0abe61e736a7452e7f (diff)
downloadlua-language-server-96574328fd631b8fd3b875517a0ed258db568064.zip
手动回收垃圾
Diffstat (limited to 'server/src')
-rw-r--r--server/src/service.lua69
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