![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
lua
jinxinliu1
这个作者很懒,什么都没留下…
展开
-
Lua查找表元素过程(元表、__index方法是如何工作的)
Lua的表本质其实是个类似HashMap的东西,其元素是很多的Key-Value对,如果尝试访问了一个表中并不存在的元素时,就会触发Lua的一套查找机制,也是凭借这个机制来模拟了类似“类”的行为举例说明:[plain] view plain copytempTable = {} print(tempTable.memberA)转载 2018-01-22 15:50:16 · 278 阅读 · 0 评论 -
Lua 性能剖析
Lua 性能剖析在这篇文章中:引言Lua的基本类型Table的实现Table查找性能Table空间占用对比虚拟机的主要构造Lua函数调用的性能Lua中的全局变量存取协程切换的性能垃圾回收总结参考资料引言Lua语言在游戏行业大受欢迎,因运行效率高(相比于其他脚本语言),热更方便等原因被广泛应用。在IEG,情况略有不同,C++大行其道。有的小伙伴(包括本文作者)想在现有c++系统中引入lua,被挑战的...转载 2018-06-08 17:18:21 · 9145 阅读 · 0 评论 -
深入探究Lua的GC算法
对于内存的管理,是程序在应用的时候的必需知识点,《Lua设计与实现》中对Lua语言的GC原理做了一个详细的讲解,云风的blog也对其进行了详尽的讲解Lua GC 的源码剖析 系列给出作者 @codedump 在github上的lua源码链接:https://github.com/lichuang/Lua-5.1.4-codedump这儿就继续做《Lua设计与实现》的阅读笔记,对Lua GC原理及其...转载 2018-06-15 15:17:25 · 4254 阅读 · 0 评论 -
GC算法和种类
GC算法和种类GC(Garbage Collection)算法和种类综述:为方便阅读和整体把握,目前整个jvm学习整理分为五篇,建议按顺序学习,如下:第一篇 ——JVM内存模型第二篇 (本篇) —GC算法和种类第三篇 —— 垃圾收集器及GC参数第四篇 —— 调优工具使用介绍第五篇 —— jvm面试常见问题注:本篇只介绍JVM垃圾回收(篇幅有些长,耐心看完收获很大的)================...转载 2018-06-15 15:15:55 · 252 阅读 · 0 评论 -
探索Lua5.2内部实现:Garbage Collection
Lua5.2采用垃圾回收机制对所有的lua对象(GCObject)进行管理。Lua虚拟机会定期运行GC,释放掉已经不再被被引用到的lua对象。基本算法基本的垃圾回收算法被称为"mark-and-sweep"算法。算法本身其实很简单。首先,系统管理着所有已经创建了的对象。每个对象都有对其他对象的引用。root集合代表着已知的系统级别的对象引用。我们从root集合出发,就可以访问到系统引用到的所有对象...转载 2018-05-28 17:53:20 · 343 阅读 · 0 评论 -
Lua源码分析 -- 虚拟机以及指令解释
Lua首先将源程序编译成为字节码,然后交由虚拟机解释执行.对于每一个函数,Lua的编译器将创建一个原型(prototype),它由一组指令及其使用到的常量组成[1].最初的Lua虚拟机是基于栈的.到1993年,Lua5.0版本,采用了基于寄存器的虚拟机,使得Lua的解释效率得到提升, 1、指令系统与虚拟机和指令相关的文件主要有两个: lopcodes.c和lvm.c.从名称可以看出来,这两个文件分...转载 2018-05-28 16:55:37 · 7843 阅读 · 0 评论 -
模式匹配函数
模式匹配函数在string库中功能最强大的函数是:string.find(字符串查找)string.gsub(全局字符串替换)string.gfind(全局字符串查找)string.gmatch(返回查找到字符串的迭代器)这些函数都是基于模式匹配的。与其他脚本语言不同的是,Lua并不使用POSIX规范的正则表达式[4](也写作regexp)来进行模式匹配。主要的转载 2018-01-30 15:00:29 · 817 阅读 · 0 评论 -
Lua调用原理展示(lua的堆栈)
这篇文章我是 攒了好久 没写了,看了这篇文章好,我觉得可以帮助大家更容易了解lua的运行原理,与调用方法,若有错误也希望及时指正。希望可以帮助到你。(2.3中的Gif图,可以生动的表现过程)一、Lua虚拟机的栈1.1先简单介绍下Lua虚拟机的栈,如图:规则:①若Lua虚拟机堆栈里有N个元素,则可以用 1 ~ N 从栈底向上索引,也可以用 -1转载 2018-01-30 14:54:58 · 2360 阅读 · 3 评论 -
Lua脚本热更新
用途在生产环境上,总有可能出现不可预知的Bug,而通常修改好Bug仅仅又修改几句,停机维护的成本又太高,对于游戏来说,通常每个服就是单独的进程,也做不到像分布式环境下,关掉一部分机器,先升级一部分,再升级另一部分的无缝升级。这时候如果有热更就可以迅速的把Bug修复方案通过热更新进行修复,不会对用户任何的影响。例如:业务逻辑有Bug配置的数据有误需求发生变更热更新的原则1、热更新不破坏原有数据热更新...转载 2018-01-22 17:04:45 · 2481 阅读 · 0 评论 -
lua闭包全面解析
在Lua中,闭包(closure)是由一个函数和该函数会访问到的非局部变量(或者是upvalue)组成的,其中非局部变量(non-local variable)是指不是在局部作用范围内定义的一个变量,但同时又不是一个全局变量,主要应用在嵌套函数和匿名函数里,因此若一个闭包没有会访问的非局部变量,那么它就是通常说的函数。也就是说,在Lua中,函数是闭包一种特殊情况。简而言之,闭包就是一个函数加一个u转载 2018-01-22 16:15:51 · 322 阅读 · 0 评论 -
Lua中的线程和状态
1、概述 线程(thread)作为Lua中一种基本的数据类型,它代表独立的执行线程(independent threads of execution),线程类型是实现协程(coroutines)的基础,注意这里的线程类型不要与操作系统线程混淆,Lua的线程类型是Lua虚拟机实现一种数据类型。从Lua脚本来看,一个协程就是一个线程类型,比如:[cpp] view plain copylocal...转载 2018-06-08 17:21:04 · 3092 阅读 · 0 评论