17.垃圾回收
17.1 知识点
垃圾回收方法
- 垃圾回收相关方法
collectgarbage("命令")
通过传入不同命令进行不同操作
collectgarbage("count")
获取当前lua占用的内存数 以KB为单位 用返回的内存数*1024可以得到具体的内存占用字节数
print(collectgarbage("count")) -- 20.8671875
collectgarbage("collect")
进行垃圾回收 理解有点像C#的 GC
collectgarbage("collect")
print(collectgarbage("count"))-- 19.771484375 少占用了一些内存
垃圾回收机制
- lua中的垃圾回收机制和C#中垃圾回收机制很类似 切断引用就会变成垃圾
test = {id = 1, name = "123123123123123123",age =10,}
print(collectgarbage("count")) --19.9560546875 多占用了些内存
test = nil
collectgarbage("collect")
print(collectgarbage("count"))-- 19.771484375 回收了{id = 1, name = "123123123123123123",age =10,} 少占用了一些内存
自动垃圾回收
- lua中有自动定时进行垃圾回收的方法
- 但是在Unity中热更新开发 尽量不要去用自动垃圾回收 以免产生性能问题
- 建议过场景或某些情况下手动管理垃圾回收
17.2 知识点代码
print("**********垃圾回收************")
print("**********知识点一 垃圾回收方法************")
--垃圾回收相关方法 collectgarbage("命令") 通过传入不同命令进行不同操作
--collectgarbage("count") 获取当前lua占用的内存数 以KB为单位 用返回的内存数*1024可以得到具体的内存占用字节数
print(collectgarbage("count")) -- 20.8671875
--collectgarbage("collect") 进行垃圾回收 理解有点像C#的 GC
collectgarbage("collect")
print(collectgarbage("count")) -- 19.771484375 少占用了一些内存
print("**********知识点二 垃圾回收机制************")
--lua中的垃圾回收机制和C#中垃圾回收机制很类似 切断引用就会变成垃圾
test = { id = 1, name = "123123123123123123", age = 10, }
print(collectgarbage("count")) --19.9560546875 多占用了些内存
test = nil
collectgarbage("collect")
print(collectgarbage("count")) -- 19.771484375 回收了{id = 1, name = "123123123123123123",age =10,} 少占用了一些内存
print("**********知识点三 自动垃圾回收************")
--lua中有自动定时进行垃圾回收的方法
--但是在Unity中热更新开发 尽量不要去用自动垃圾回收 以免产生性能问题
--建议过场景或某些情况下手动管理垃圾回收
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com