本文主要是介绍Lua程序设计(六十四),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
控制垃圾收集的步长
通过函数collectgarbage可以对垃圾收集器进行一些额外的控制,该函数实际上是几个函数的集合体:第一个参数是可选的字符串,用来说明进行何种操作;有些选项使用一个整形作为第二个参数,称为data。
第一个参数的选项有以下七个。
”stop": 停止垃圾收集器,使用选项"restart"再次调用collectgarbage。
“restart”: 重启垃圾收集器。
”collect": 执行一次完整的垃圾收集,回收和析构所有不可达的对象。
“step”: 执行某些垃圾工作,第二个参数data指明工作量, 即分配了data个字节后垃圾收集器应该做什么。
“count”: 以KB为单位返回当前已用内存数,该结果是一个浮点数,乘以1024得到的就是精确的字节数。
“setpause": 设置收集器的pause参数。参数data以百分比为单位给出要设定的新值:当data为100是,参数设为1.
“setsetmul”: 设置收集器的stepmul参数(步进速率, step multiplier)。参数data给出新值,也是以百分比为单位。
两个参数pause和stepmul控制着垃圾收集器的角色。任何垃圾收集器都是使用CPU时间换内存空间。pause和stepmul的默认值试图在不消耗内存和消耗巨大内存这两个极端之间找到平衡点。
参数pause用于控制垃圾收集器在一次收集完成后等待多久再开始新的一次收集。
参数stepmul控制对于每分配1KB内存,垃圾收集器应该进行多少工作。
函数collectgarbage的另外一些参数用来在垃圾收集器运行时控制它的行为。 例如,如果我们不想让垃圾收集器在某些阶段运行,那么可以通过调用函数**collectgarbage(“stop")停止垃圾收集器,然后调用collectgarbage(“restart”)**来重启垃圾收集器。
这篇关于Lua程序设计(六十四)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!