Luajava HeapWorker 在执行大型脚本时出现了卡住的情况。
2017-5-23 10:31:56
收藏:0
阅读:79
评论:0
在我的 Android 应用中,我遇到了以下报错:
E/dalvikvm: HeapWorker is wedged: 10629ms (generally more than 10 sec) spent inside Lorg/keplerproject/luajava/LuaObject;.finalize()V
我搜索了答案,并主要找到了有关垃圾回收器的信息。在此之后,我从我的代码中移除了所有 finilizer。但是这并没有帮助。将 SQLite 操作移动到事务中也没有用处。
目前的情况是:
我有一个 LuaTable,我遍历它以执行某些值的操作:
local myTable = getTable() -- 函数返回值的表
for i,v in ipairs(myTable) do
someFunction(v)
end
该表很大(近1000个值)。对这些值的操作如下:
- 根据值信息创建Java对象
- 查询数据库(结果 - Cursor)在Java对象创建过程中
执行脚本的整个时间变得相当长(我通过函数LuaState.pcall运行脚本)。因此,我的研究导致以下结果:
- 当我处理了约15个值(1000个)时,'finalize'方法被调用;
- 但是脚本仍在执行,所以 LuaState 对象似乎被锁定(Mast3rPlan,谢谢你的评论!)。而且它肯定会被锁定超过10秒钟(因为有近1000个值要处理)。而在这段时间中,无法进入 finilize 的同步块。因此,应用程序崩溃了。 请注意,即使删除同步块的括号也没有用。在这种情况下,LunRef 方法会被锁定(请参阅 finalize 方法)。
这是 LuaJava API 的问题吗?还是还有其他方法可以执行脚本,并避免出现finalize的问题?
提前感谢您的帮助!
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法