Yaukey

Results 14 comments of Yaukey

我也是同样的问题,今天刚下载,无法翻译,属于公司内网,很多软件需要填写代理。

谢谢你的反馈,我会用你的数据查找下问题

Hi,你好,我分别测试了,Lua5.1, Lua5.3, LuaJit2.0.3, LuaJit2.0.4, LuaJit2.0.5, LuaJit2.1.0-beta1 均运行正常,成功生成对比文件,没有出现你说的错误,而且这个错误提示不是lua的啊,Lua 和 LuaJit 的源码中也没有任何这样的字符串。 ps: 我上网搜索了下你的这个错误 “[globbing] error: bad range specification after pos” 貌似是 curl 命令行参数不对的问题,你可以看看是不是 curl 部分出现了错误,是由于你使用该插件可能哪里不当引起的?

另外贴一下示例代码,使用你的测试数据: ```lua local mri = require("MemoryReferenceInfo") mri.m_cMethods.DumpMemorySnapshotComparedFile("./", "Compared", -1, "./LuaMemRefInfo-All-[20180314-003014].txt", "./LuaMemRefInfo-All-[20180314-055631].txt") ```

Hi,我知道可能是什么问题了,可能是文件名的中括号 “[]” 引起的,这个中括号在 OpenResty 中被当成正则表达式的匹配符了,你尝试去掉文件名的中括号,或者在使用 `local mri = require("MemoryReferenceInfo")` 的文件中,在下面加入以下几句 ```lua mri.m_cConfig.m_bAllMemoryRefFileAddTime = false mri.m_cConfig.m_bSingleMemoryRefFileAddTime = false mri.m_cConfig.m_bComparedMemoryRefFileAddTime = false ``` 作用是生成文件时不添加当前的时间戳(默认时间戳都是放在了中括号中),如果文件名有其他正则表达式的通配符,请都去掉试试,我觉得很可能是这个问题。

如果你想保留时间戳,你将源码稍微改一下,默认生成的时间使用了中括号"[]"将时间括起来了,你换成别的或者直接去掉中括号吧,可能引起正则表达式解析的问题了。具体直接在源码里搜索下中括号就好了,如果后面你有时间验证了请反馈下验证结果吧

> > > 我在tolua 空项目中能正常测试, 但是放到项目中,运行就卡住,要等很久,是内存递归检测太耗时了?有没有办法优化一下 你打印下LuaGC看看当前虚拟机多大,按照之前使用,100-200M左右,一般是不会出现卡死,Dump很快。

1.你无论如何都不要在具体项目中使用 "./" 这样的相对路径,我示例中这么写是为了方便保存在当前路径下,slua 或者 ulua 等环境不一样,也会存在读取权限的问题,恐怕你自己都不知道 "./" 会保存到哪里;你应该自己去合并一个明确的路径才对,比如:Application.persistentPath + "/LuaSnapshot/" 或者 Application.dataPath + "/LuaSnapshot/" 类似非常明确的路径才对; 2.mri.m_cMethods.DumpMemorySnapshotCompareFile 中也是一样,显示的传入文件夹路径和文件路径,你修改试试。

这个比较奇怪了,你的 lua memroy 得多大,一般10M以下,5M左右正常,我曾经遇到过因为泄露100M的lua memroy,打印快照也是很快没有死过的情况,不知道你的情况,你需要看看 collectgarbage("count") 的数值,如果这个数值太夸张,比如甚至大于 100M,就得考虑你项目对于lua的使用是不是有什么问题。如果你有数据尽量贴过来帮你看看。

这个没办法,你的虚拟机内存太大了,几百兆,不过也不至于所有操作卡死,顶多unity会卡一会儿,生成过程没那么慢,可能你触发了什么访问权限的东西被系统阻止,你首选确认修改了我上面说的生成路径,应该是你项目的问题。DumpMemorySnapshot 接口最后有两个默认参数,不填的话是打印 debug.registry,你可以显示指定,比如: mri.m_cMethods.DumpMemorySnapshot("./", "1-Before", -1, "_G", _G),只打印 _G 的引用,你可以换成更小的对象试试。