17.垃圾回收

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

×

喜欢就点赞,疼爱就打赏