hchunhui / librime-lua

Extending RIME with Lua scripts
BSD 3-Clause "New" or "Revised" License
293 stars 43 forks source link

在iPhone 上的irime5 和 仓输入法中 env.reverse = ReverseDb("build/".. dict_name .. ".reverse.bin") 会导致每次调键盘内存都在涨 #339

Closed Attiv closed 2 months ago

Attiv commented 2 months ago

相关的方案 lua 如下: https://github.com/xkjd27/rime_jd27c/blob/e38a8c5d010d5a3933e6d6d8265c0cf7b56bfcca/rime/lua/jd27_hint.lua#L89

有什么解决办法吗?注释掉这行代码内存就不会一直增加了

shewer commented 2 months ago

檢查 librime-lua 版本 是否更新至 有gc()

還有另一個 ReverseLookup( 'cangjie5') -- 使用 librime 內存 api 接口一樣

如果沒有增長太快 就不用 手動加GC

手動加gc 可以 找一個 lua_component 中使用 commit_notifier

local M={}
function M.init(env)
  env.gc = env.engine.context.commit_notifier:connect(
       function(ctx)   collectgarbage('collect')     end)
end

function M.fini(env)
    env.gc:disconnect()
end
ChunChiYanYun commented 2 months ago

檢查 librime-lua 版本 是否更新至 有gc()

還有另一個 ReverseLookup( 'cangjie5') -- 使用 librime 內存 api 接口一樣

如果沒有增長太快 就不用 手動加GC

手動加gc 可以 找一個 lua_component 中使用 commit_notifier

local M={}
function M.init(env)
  env.gc = env.engine.context.commit_notifier:connect(
       function(ctx)   collectgarbage('collect')     end)
end

function M.fini(env)
    env.gc:disconnect()
end

感谢回答 不过很抱歉我没看明白应该怎么用,可以结合上面的 hint lua 讲解一下怎么用吗? 输入法法里的 librime-lua 是昨天刚更新的 再次感谢

mirtlecn commented 2 months ago

他给你写的不就是所有代码吗,在 init 函数挂一个 commit_notifier,里面定义一个 gc 函数,fini 函数里面 disconnect。

另外试试 Reverselookup 函数内存情况

Attiv commented 2 months ago

CleanShot 2024-05-10 at 09 54 03@2x

感谢,不过我这样写了之后在 仓输入法里内存还是很高,注释掉这个Lua 内存占用少一半

shewer commented 2 months ago
env.reverse = ReverseLookup(dict_name)
Attiv commented 2 months ago
env.reverse = ReverseLookup(dict_name)

可以了,万分感谢