lua内存回收机制,,简单讲解Lua中的垃圾回收机制

lua内存回收机制,,简单讲解Lua中的垃圾回收机制

本文主要介绍Lua中的垃圾收集机制。自动垃圾收集是Lua的重要特性之一,有需要的朋友可以参考一下。

Lua使用基于Lua内置的一些算法的垃圾收集来自动管理内存。可能是自动内存管理的结果,作为开发人员:

不需要担心为对象分配内存。

当不再需要它们时,它们可以被设置为零。

当Lua使用运行时不时地收集死对象时,它不再从Lua程序访问垃圾收集器。

所有对象,包括表、用户数据、函数、线程、字符串等。受到自动内存管理的影响。Lua使用增量标记和两个数字来控制其垃圾收集周期,即垃圾收集暂停和垃圾收集器步骤,以达到事半功倍的效果。这些值以百分比表示,100的值始终等于1。

垃圾收集暂停

垃圾收集暂停用于控制垃圾收集器需要等待多长时间;它被Lua的自动内存管理再次调用。低于100的值意味着下一个周期不会在Lua中等待。这个值的一个类似的高值将导致垃圾收集器速度慢,并且本质上不太活跃。200意味着等待该集合的总内存是新周期开始前的两倍。因此,根据不同的属性和应用速度,可以更改该值以获得Lua中的最佳性能。

垃圾收集器的步骤事半功倍

这个步长乘数控制Lua程序内存分配中垃圾收集的相对速度。更大的步长会使垃圾收集器更积极,也会增加垃圾收集的每个增量步骤的步长。小于100的值通常会导致垃圾收集器无法完成其循环,因此通常不是首选值。默认值是200,这意味着垃圾收集器的运行速度是内存分配的两倍。

垃圾收集器函数

作为开发人员,我们确实让Lua自动管理内存。有几种方法可以做到这一点。

Collectgarbage('collect '):执行一个完整的垃圾收集周期。

Collectgarbage('count '):返回当前使用的程序内存的千字节数。

Collectgarbage('restart '):如果垃圾收集器已经停止,它将重新启动。

Collectgarbage('setpause '):将第二个参数除以100所得的值设置为垃圾收集器暂停变量。其目的是作为一个讨论点。

Collectgarbage('setstepmul '):将作为第二个参数给定的变量的值除以100设置为垃圾步长乘数。其目的是作为一个讨论点。

Collectgarbage('step '):运行垃圾收集的步骤。第二个参数是,步长越大,步长也会越大。如果触发的步骤是垃圾收集周期的最后一步,则收集的垃圾将返回true。

Collectgarbage('stop '):如果垃圾收集器正在运行,则停止它。

下面是一个使用垃圾收集器的简单例子。

复制代码如下:mytable={'apple ',' orange ',' banana'}

print(collectgarbage('count '))

mytable=nil

print(collectgarbage('count '))

print(collectgarbage('collect '))

print(collectgarbage('count '))

当我们运行上面的程序时,我们将得到下面的输出。请注意,这个结果会有所不同,因为Lua的自动内存管理功能在操作系统中也可能有所不同。

复制的代码如下:20.5656666666667

20.9853515625

0

19.4111328125

从上面的程序可以看出,一旦垃圾收集完成,就可以减少内存的使用。但这也不是一个强制性的要求。即使我们不调用它,它也会在后期预定时间后被Lua解释器自动执行。

显然,如果我们需要使用垃圾收集器,我们可以改变这些函数的行为。这些特性为开发人员处理复杂情况提供了一点额外的能力。根据不同的内存要求,程序类型可以使用,也可以不使用。而是应用程序的内存使用和程序本身,以避免在部署后对结果进行不必要的检查。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • word文档无法编辑是怎么回事-
  • 华为手机怎么设置返回键(华为手机下面的三个按键设置方法)
  • lumia950怎么样(Lumia950体验分享)
  • otg连接是什么意思(OTG连接手机方法)
  • 笔记本触摸板怎么右键(笔记本电脑触控板手势操作设置)
  • 真我x7怎么样(realme X7 系列体验)
  • 苹果的A16处理器有多强(苹果的A16处理器的介绍)
  • 小米互传怎么用(小米手机的连接与共享教程)
  • 怎么设置电脑桌面图标自动对齐 设置电脑桌面自动整理图标的方法
  • 宽带错误651最简单解决方法(处理宽带错误651的措施)
  • 大学生手机有什么推荐(大学生换手机攻略)
  • 天玑1100和骁龙778g哪个好(骁龙778G、天玑900、天玑1100购选建议)
  • yum update 升级报错的解决办法
  • Windows10禁用屏保教程
  • 连接wifi显示无互联网连接怎么办(无线连上了却不能上网处理绝招)
  • 留言与评论(共有 条评论)
       
    验证码: