1. 问题:一款用Lua做的游戏,玩了一段时间后会变卡

因为知道lua是有自动管理内存的机制,所以之前一直没有关注过lua内存的问题。所以今天好好的查看了lua垃圾收集机制。看了一下Lua的Garbage Collection

2. Garbage Collector Functions

-- Runs one complete cycle of garbage collection.
collectgarbage("collect") -- Returns the amount of memory currently used by the program in Kilobytes.
collectgarbage("count") -- If the garbage collector has been stopped, it restarts it.
collectgarbage("restart") -- Sets the value given as second parameter divided by 100 to the garbage collector pause variable.
collectgarbage("setpause") --Sets the value given as second parameter divided by 100 to the garbage step multiplier variable.
collectgarbage("setstepmul") --Runs one step of garbage collection. The larger the second argument is, the larger this step will be. The collectgarbage will return true if the triggered step was the last step of a garbage-collection cycle.
collectgarbage("step") --Stops the garbage collector if its running.
collectgarbage("stop")
  • 理解上可能会有点问题,所以先把原本的注释先拷贝过来,下面是我自己的理解
  1. collect : 立马执行一遍完整的垃圾回收
  2. count: 得到当前应用的当前内存消耗,返回值是用Kb计算的
  3. restart: 就是Garbage collector 停止掉后重新启动
  4. setpause: 使用的正确格式collectgarbage("setpause", 200)意思就是当收集器在总使用内存数量达到上次垃圾收集时的两倍时再开启新的收集周期,而如果200是100时表示不停的进行垃圾回收
  5. setstepmul: 使用的正确格式collectgarbage("setstepmul", 500),第二个值有一个默认值200, 表示垃圾收集器的运行速度是内存分配的2倍。

3.最后的解决方案,不考虑性能,初步解决

collectgarbage('setpause')
collectgarbage('collect')

Lua 垃圾收集机制的更多相关文章

  1. javascript的垃圾收集机制

    × 目录 [1]原理 [2]标记清除 [3]引用计数[4]性能问题[5]内存管理 前面的话 javascript具有自动垃圾收集机制,执行环境会负责管理代码执行过程中使用的内存.在编写javascri ...

  2. JAVA垃圾收集机制剖析

    1.垃圾收集算法的核心思想 Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象.该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽 ...

  3. Dalvik虚拟机的垃圾收集机制

    垃圾收集机制是Java虚拟机共有的特性, 这里介绍Dalvik虚拟机的垃圾收集机制特点. 在android2.3之前,有以下几个特点: 1.  垃圾收集线程在执行的时候,其它线程都停止. 2.  一次 ...

  4. .Net Discovery 系列之七--深入理解.Net垃圾收集机制(拾贝篇)

    关于.Net垃圾收集器(Garbage Collection),Aicken已经在“.Net Discovery 系列”文章中有2篇的涉及,这一篇文章是对上2篇文章的补充,关于“.Net Discov ...

  5. .Net Discovery系列之三 深入理解.Net垃圾收集机制(上)

    前言: 组成.Net平台一个很重要的部分----垃圾收集器(Garbage Collection),今天我们就来讲讲它.想想看没有GC,.Net还能称之为一个平台吗?各种语言虽然都被编译成MSIL,但 ...

  6. js的垃圾收集机制以及写代码如何处理

    程序都自己的内存,一旦内存过多就会清楚以前的缓存.所以,在写代码的时候,不要仅仅只会推变量到栈中,还要会将变量从栈中释放. 那么问题来了,我们应该如何将内存从栈中释放呢? 要释放变量,那就要从java ...

  7. 5-Dalvik垃圾收集机制Cocurrent GC

    Dalivik垃圾回收收机制Cocurrent GC简介和学习计划 导语: 在C/C++中,开发者需要手动地管理在堆中分配的内存,但是这往往导致很多问题. 1. 内存分配之后忘记释放,造成内存泄漏. ...

  8. [转帖]JVM—深入理解内存模型与垃圾收集机制

    JVM—深入理解内存模型与垃圾收集机制 https://juejin.im/post/5d68dc9ee51d4561ad6548f7 前言 Java是一种跨平台的语言,当初其设计初衷也是为了解决各个 ...

  9. JavaScript中的垃圾收集机制

     JavaScript 具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行过程中使用的内存. 在编写 JavaScript 程序时,开发人员不用再关心内存使用问题,所需内存的分配以及无用内存的 ...

随机推荐

  1. JS的异步回调函数

    hi :)几日不见,趁着周末和父母在广州走走逛逛,游山玩水,放松身心,第一天上班就被一个问题难住了,不废话,以下是关于JS函数回调方面的知识,今天的查阅看的也是一知半解,摘录下来日后慢慢琢磨! js中 ...

  2. 常见编程语言对REPL支持情况小结[转]

    文章转载自http://www.nowamagic.net/librarys/veda/detail/2462 最近跟一个朋友聊起编程语言的一些特性,他有个言论让我略有所思:“不能REPL的都是渣”. ...

  3. javascript基础(一)变量

    原文http://pij.robinqu.me/ 预定义的全局变量 arguments encodeURI Infinity Array encodeURIComponent isFinite Boo ...

  4. java 操作redis

    使用Java操作Redis需要jedis-2.1.0.jar,如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar package com.test; import ja ...

  5. 浙大 pat 1047题解

    1047. Student List for Course (25) 时间限制 400 ms 内存限制 64000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Y ...

  6. strpos 返回0时 ,比较false 不能加单引号

    $a =  'a.approve'; $num = strpos($a,'a.admin'); if(strpos($a,'a.approve') !== 'false'){ //不能加单引号.变字符 ...

  7. txt文件的读取

    两个函数:textread或importdata [textread函数] 格式:I=textread('文件名.txt','列',读取的行数,'headerlines',跳过的头行数);  返回值I ...

  8. AWS ec2 vpn 搭建(20161014更新http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm)

    1.原来的SoftEther VPN Server在pc端不可用了,没找到原因,因此有搜索到了一个新方法,转自http://blog.csdn.net/henryng1994/article/deta ...

  9. HDU1503:Advanced Fruits(LCS)

    Problem Description The company "21st Century Fruits" has specialized in creating new sort ...

  10. D - Digging(01背包,贪心)

    D - Digging Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Submit St ...