焦点资讯:测试代码:如何玩转Lua内存回收?
那么, 有没有一些有效的解决办法, 来解决这个这个隐患呢, 答案就是collectgarbage. collectgarbage就是开放给Lua开发人员, 用于监听Lua的内存使用情况(collectgarbage("count")), 同时,它还提供了collectgarbage("collect"),允许在适当的时候进行显式的回收.
现在,通过测试代码来看看,如何玩转collectgarbage.
首先,为了有明显的对比, 先来看没有产生泄露的情况, 运行以下的test1(代码如下):
(资料图)
运行结果如下:
这里看到, 被local 声明的colen加了5000数组, test1调用后, 内存增加了大概300K(25906K-25620K). 现在,我们来做内存回收(调用mem函数, 代码如下): 运行结果: ( 为了保证内存的稳定,以上注意mem被调用了多次, 再第2次, 可以看到内存开始下降, 最后,大概在25618K稳定下来) 好了, 从最初的 25620K, 到回收后的 25618K, 两者并没有发生变化(还少了2K,嘿嘿, 这应该是误差了), 也就是说,函数test1的执行,并没有产生无法回收的内存,没有泄露出现.好了,现在运行有泄露的test2(代码如下), test2跟test1相比,只有一处不同:就是colen被误声明为全局:
结果:
也就是说,内存也在25906K,跟test1几乎是相等, 好了,现在再调用回收(mem)函数,产生结果如下 为了保证函数回收被执行,这次,总共调用了7次mem函数(看以上打印行数), 那么,从上面的结果我们看, 很不幸, 从第1次,到最后第7次, 内存都还是稳定在25905K左右, 也就是说, 跟调用test2前相比,即使Lua进行了内存回收, 内存却不会将下来 看来 , 这 300K(25906K-25620K) 内存 , 由于已放到了全局函数中,是永远没有机会被回收到了!总结一: 如何监测Lua的编程产生内存泄露:
1. 针对会产生泄露的函数,先调用collectgarbage("count"),取得最初的内存使用
2. 函数调用后, collectgarbage("collect")进行收集, 并使用collectgarbage("count")再取得当前内存, 最后记录两次的使用差
3. 从test1的收集可看到, collectgarbage("collect")被调用,并不保证一次成功, 所以, 大可以调用多次
总结二: 如何避免Lua应用中出现的内存使用过大行为:
1. 当然是代码实现不出现泄露, (废话*&%$()
2. 在测试中,其实还发现, Lua中被分配的内存,其实并不会自动回收(个人估计要么就是Lua虚拟机没有做这个事情,要么就是回收的时机是在C层), 所以, 为了避免内存过大, 应用的运行时,可能需要定期的(调用collectgarbage("collect"),又或者collectgarbage("step"))进行显式回收。
大小: 2.7 KB 大小: 6.3 KB 大小: 4.6 KB 大小: 5.7 KB 大小: 9.2 KB 大小: 2.3 KB 大小: 2.3 KB标签:
相关推荐:
最新新闻:
- 什么是Config?spring-cloud统一配置中心组件流程图_世界微资讯
- 《潜行者2》新实机预告明早3点发布
- 推荐12本好看的高干文 每本都值得看三次
- 焦点资讯:测试代码:如何玩转Lua内存回收?
- 今日快讯:《Eximius:抢占前线》第三赛季“突破”预告片
- 《利刃出鞘2》成网飞圣诞周冠军 观看时长8210万小时
- 【环球新要闻】卡梅隆确认《阿凡达》要拍7部 《阿凡达 3》&《阿凡达 4》已经开拍
- 精选!宏碁新款游戏本曝光 搭载RTX 4080显卡
- 明年游戏本起飞 RTX4080移动版跑分曝光
- 全球速看:真我GT Neo 5曝光:240W闪充拿捏了!
- 1月3日见!NV要发新显卡 你买不买?|全球播报
- 动画《尼尔:机械纪元1.1a》发布新预告确定主题歌
- 元宇宙开局不利,2022年VR头戴设备销售下滑|全球消息
- 石油业要阻止暴利税!埃克森美孚正式起诉欧盟 当前热文
- 每日焦点!无线连接电视全景声 LG发布新回音壁旗舰
- 天天即时看!CPU太落后!任天堂决定砍掉Switch Pro:准备真正的硬件迭代
- 环球报道:【渠道那些事】1600元的RTX 3060显卡能买么?
- 200Hz高刷+1ms响应 30寸带鱼屏显示器949元 环球热议
- CES 2023宏碁新款轻薄本曝光 搭载i5-1350P处理器
- 环球速看:节奏游戏《Bits & Bops》众筹成功将推出Switch版
- 世界滚动:Switch《闪电十一人》支持多种操作 2月还有新情报
- 全是马屁精 马斯克被指出身边缺乏持不同观点的人
- 官方立减 天猫年货节“跨店满减””预售膨胀金“全取消:速讯
- 全球最资讯丨CES 2023前夕 联想发布新一代ThinkPad X1
- 速看:索尼官宣CES 2023全球发布会时间:PS VR2有望亮相!
- 天天头条:售价高达6000元 这些“数码口罩”刷新了我的认知
- 全球球精选!PS4模拟器fpPS4首次能够以可接受帧率运行3D游戏
- 要闻:Epic喜加一:《致命躯壳》免费领取
- 每日速递:NVIDIA证实将在1/3展示40移动GPU和4070Ti
- 弹幕射击《式神之城2》明年4月13日登陆Switch
- 迈向八连跌?特斯拉血流不止,盘前一度跌近4%,势创最长连跌纪录_全球即时看
- 外媒PC Gamer:不会再有孤岛危机3这样的显卡杀手了
- 全球头条:一个时代的结束!负利率债券将成为历史
- moto razr 2022宣布调价至4999元 立减1000元
- 环球要闻:国产生存rogue《通神榜》上架Steam 明年Q1发售
- 快资讯丨《尼尔机械纪元》TV动画新预告:2B老婆又美又飒!
- “数字·进化”——2022数字化发展峰会圆满落幕_精彩看点
- 特斯拉无线充电垫开启预售:苹果曾开发类似产品
- 直降1000!moto razr2022折叠屏降至4999元起
- 一人开发的恐怖动作RPG《埃斯滕塞尔》2023年1月登陆Steam
- 国产操作系统盘399元开售:插上就是双系统
- 卡梅隆自曝《阿凡达2》10分钟删减镜头
- 当前资讯!小米mini主机卖爆了:i5核心卖2799
- 200多元就能买到1Tb的固态SSD了-每日关注
- 李子柒将复出登微博热搜 归来江湖会变天吗?:全球视讯
- 2022年全球最帅面孔出炉:亨利·卡维尔第一 内地众流量上榜
- 《利刃出鞘2》成网飞收视开局第六高的原创电影 天天看热讯
- 欧股迈向2018年来最差年度表现,特斯拉盘前股价过山车,欧洲天然气跌近3%
- 开启全无尘3.0新时代,长虹空调新品重新定义好新风标准
- 世界资讯:Redmi K60 Pro性能超越苹果A16:135万分 3299元起
- 开启全无尘3.0新时代,长虹空调新品重新定义好新风标准
- 当前信息:张朝阳物理课上热搜:地球不存在全黑的地方
- 北濑佳范展望2023:时机成熟时会解禁《最终幻想7重生》的消息
- 环球快讯:小鹏 G9充电实测,真能5分钟充130公里?
- 大白菜,还是北方人冬天的信仰吗?-全球微动态
- 亚信科技发布AntDB V7.2数据库 焦点速递
- 入手Apple Watch监测家人血氧饱和度 京东以旧换新至高补贴550元
- 腾讯开发《宝可梦大集结》等游戏获批 2022年进口网络游戏审批结果公布_全球消息
- “你好BOE”完美收官 “屏之物联”肇启智慧美好未来新篇章
- 今日热文:王者荣耀皮肤通用背景将进行品质提升,三款皮肤尝鲜
- 恋爱游戏?《赛博朋克2077》玩家讨论想发展情感线的NPC|环球热文
- 支付宝深色模式即将正式上线 已开启尝鲜招募-天天观天下
- 张艺谋《满江红》演员定妆视频 沈腾易烊千玺出演_环球新消息
- 钉钉宣布用户数突破6亿 企业组织数超过2300万
- 每日热闻!你达标没?31省份2021年平均工资数据出炉 突破10万:这些行业最赚钱
- 新iPad mini曝光:苹果加量不加价 密谋折叠屏惊喜
- 发布诸多电池黑科技,长城汽车新能源又酝酿新动作了?
- 时隔548天!进口网络游戏版号今日发放_每日热文
- 拳头射击游戏《VALORANT》获得版号 腾讯宣布国服定名《无畏契约》_全球速递
- 《超电磁机器人波鲁迪斯V》真人版预告 合体战斗-今日热门
- 世界微头条丨缅甸北部没有商机,只有打不完的诈骗电话
- Apollo开放平台8.0重磅发布:多维升级“为开发者而生” 焦点消息
- ROG成为电影《流浪地球2》造梦未来合作伙伴
- 全球热文:关于公布2022年度媒体融合创新技术与服务应用遴选推广计划评审结果的通知
- 机汤数字租赁行业大会在杭顺利举办 世界通讯
- 全球播报:塞尔达传说王国之泪上架零售商,5月份开售
- 《电锯人》粉丝请愿动画重做:不忠于原版 男主棒读
- 环球快播:GameFreak在日本重新注册《宝可梦:X/Y》商标
- 2022年全球著名电竞城市排行发布 上海排第三
- 《利刃出鞘2》登顶网飞电影播放榜 观看达3500万次 当前热讯
- 促销伤害品牌?那是因为你还没掌握这些套路
- 上实盛世S基金二期关账8.89亿,实现超募
- 「放开」后,年轻人果然变了
- 打造安全智能文印环境 奔图A3产品家族再添新成员
- 实现数字化转型是企业进阶的重要一步!找对方法最重要!-今日观点