location ~ /lua_iconv { default_type 'text/html'; charset gbk; lua_code_cache on; content_by_lua_file /usr/example/lua/test_iconv.lua; } lua_code_cache 表示 缓存lua脚本内容JSON库&
转载 2024-05-23 15:09:51
112阅读
参考LRU算法dubbo-cache一.基本介绍1.1 常见缓存淘汰算法及其实现思路对于缓存,常见淘汰算法有3: FIFO: first in first out,先进先出,即假定刚刚加入的数据总会被访问到; LRU:least recently used,最近最少使用,判断最近被使用的时间,假定未被使用的时间越久就不可能在被使用; LFU:least frequently used,数据使用次数
转载 2024-04-07 13:23:34
28阅读
数据结构与算法顺序表<新手上路! 记录学习>顺序表为线性结构,以数组形式保存!1.创建一个结构体来表示顺序表,其中*elems表示顺序表的元素地址,length表示顺序表的长度,size表示顺序表的总的存储空间大小。 2.初始化链表,为链表分配空间,宏定义表示顺序表的总的存储大小(可自由修改),为防止顺序表存储空间分配失败,外加了一条判断语句,判断顺序表分配空间后是否为空,为空直接结束
由于目前正在负责的项目是一个二次开发项目,而且留给我们的代码质量实在让人无力吐槽,所以遇到了不少大大小小的坑,好在慢慢都淌过去了。最近就遇到了一个内存泄漏的问题,泄漏发生在lua里,项目代码里以前的开发团队留下了检测泄漏的代码,但也仅限于此。由于代码量庞大,所以想从逻辑上梳理清楚哪里的引用没干掉导致了内存泄漏几乎就是大海捞针。好在解决的过程比较顺利,这篇文章就来谈一谈Lua中如何解决内存泄漏的问题
转载 2024-04-24 09:13:20
86阅读
方法一,可以用for来遍历:do table_week = { "w", "e", "r", "t", "y", "u", "i", } for i = 1, #table_week do print(table_week[i]) endend#后面接一个数组或者tabe来遍历它,i是该table或者数组的起始下标。方法2:do table_week
原创 2023-08-25 14:19:15
76阅读
假定你要拼接很多个小的字符串为一个大的字符串,比如,从一个文件中逐行读入字符串。你可能写出下面这样的代码: 尽管这段代码看上去很正常,但在Lua中他的效率极低,在处理大文件的时候,你会明显看到很慢,例如,需要花大概1分钟读取350KB的文件。(这就是为什么Lua专门提供了io.read(*all)选项,读取同样的文件只需要0.02s)为什么这样呢?Lua使用真正的垃圾收集算法,但他发现程序使用太多
转载 2024-03-19 12:46:35
223阅读
作者:敏捷小菜 本文从Lua语法的角度来介绍Lua内存出现泄露的问题; 1、在多次刷新的情况下不停的 新建table; 如 Update()是一个不停被回调的函数,那么在Update里, function Update() local t = {};--创建表,内存泄露,游戏常见到 end
转载 2024-03-23 12:39:14
147阅读
上周UWA发表了一片博文Lua性能优化—Lua内存优化作者分享了在unity中lua使用的不少干货,文中提到两个lua的小插件,一个是内存检查工具Snapshot,一个是性能分析工具LuaProfiler。 正好上周笔者也涉猎到了这方面的实践上,作为记录我将操作步骤分享下。 1.首先Snapshot是云风大大曾经的一篇博文提到的工具一个 Lua 内存泄露检查工具 2.其次Profiler也是
转载 2024-03-22 20:07:28
135阅读
Lua会造成内存泄露的表征分析: #因素一:(实例型)实体资源的创建持有者和调用者,相互之间如果太过信任,那么对调用者就会形成过高的要求,创建者可以让任意的调用者进行任意的create,调用者消费后以为创建者会管理(销毁),但其实并非如此,比如有这样一个实体管理器xxxManager,它有接口createXXX/removeXXX, 那么,创建和销毁的权利都丢给了调用者,如果调用者光creat
转载 2024-04-15 11:31:58
95阅读
这两天剖析了一下socket.lua,整体不是很难,主要是数据缓冲区的实现需要好好分析一下。这里读写数据也是用到了缓冲池的思想,为了更加直观的说明代码,还有方便测试,我去掉lua代码,把核心接口直接用C++实现了一遍:#include <stdio.h> #include <string.h> #include <vector> using std::vecto
转载 2024-02-27 14:59:34
183阅读
缓存池基本写法--------------------------------- -- Lua Class对象池 -- 自己管理好池的清空时机 --------------------------------- ObjectPool = Class( "ObjectPool" ); -- 构造函数,传需实例化的对象 function ObjectPool:Ctor( class ) se
转载 2024-04-13 12:47:05
35阅读
1.起因上半年项目开始使用UWA GOT Online进行性能分析检测。在Lua项的检查中,引用已经被Destroyed的Unity Object数量一直在上升,由此判断,项目中Lua的使用存在操造成C#堆内存泄漏的问题。2.问题分析与应对项目采用的热更新方案是ToLua,ToLua给C#对象分配ID存在一个字典里(objectsBackMap),Lua层通过id访问对应的对象。当Unity的Ob
转载 2024-04-03 19:22:49
84阅读
最近互联网的好多巨头公司都在研究VR,其实VR这个东西体验的时候有点像是一圈人围着抽一支大麻一样。为什么这么说呢,戴着设备的人在那边抽搐,旁边不知所以。完事后体验的人脱下设备交给下一位,如有虚脱,又意犹未尽。哈哈哈哈哈哈哈哈哈哈哈哈...废话不多说,今天来讲一下lua中垃圾的收集。lua提供了一个自动的内存管理。这个意思就是你不需要关心创建新对象的分配内存问题,也不需要关心这些对象不再使用时的主动
转载 2024-06-16 20:02:09
72阅读
Lua内存是自动收集的, 这点跟Java类似, 不被任何对象或全局变量引用的数据,将被首先标记为回收,不需要开发者做任何事情.但是,正如Java也会有内存泄露一样, Lua也会有, 只不过,跟C++的不同,它是由于代码执行所装载的资源,并没有被彻底销毁而导致,其中,最臭名昭著的就是不小心把局部变量声明成了全局变量(忘了加local修饰符)。 类似这样造成的
转载 2024-03-24 15:11:44
253阅读
Lua内存管理机制Lua 使用的是垃圾自动回收机制。 Lua 主要是通过运行一个垃圾收集器来收集所有垃圾(Lua 中不会被访问到但还没销毁的对象)以完成自动内存管理的工作。Lua的垃圾清理过程由4个阶段组成:标记、整理、清扫和收尾。标记阶段:Lua先将“根集合”中的对象标记为“活跃”。根集合中的对象就是Lua可以直接访问的对象,它们是注册表中的对象和主线程对象。然后,Lua将任何程序可以
1. 背景我们项目为ARPG手游(也没啥见不得人的,就叫暗黑血统手游,后期不少坑钱活动的实现出自我手,轻拍。。。)。我们的服务器底层设计源于某大厂,c/c++和luajit的实现,这次要说的是项目上线时(2014年11月左右)的一次luajit对象内存泄漏(废弃的数据没删,我们都叫泄漏)和相应的解决方案。2. 问题表现内存增长,速率大概为200~300MB/天。我们日志会周期性打印Tcmalloc
转载 2024-04-14 21:39:29
90阅读
lua内存泄漏查证  本文主要介绍某项目脚本(lua)部分内存泄漏的查证与处理过程,希望对大家有点 帮助。需要说明的是,lua本身并不存在真正的内存泄漏,只是因为使用上面的原 因导致无法gc,从而导致逻辑上的泄漏:)。 参考GCObject的声明可以发现,lua中的复杂数据类型变量的传递都是基 于引用的。当lua从根开始gc扫描的时候,只要还有一个地方有对此变量的引用,那 么
转载 2024-04-17 10:48:37
47阅读
Why Lua---------------------------------------------一个功能强大,快速,轻量级,可嵌入的脚本语言。程序语法构造简单,用关键数组来实现强大的数据描述功能,同时还提供一些可扩展的语义特征动态类型,无需编译,由解释器先翻译成lua虚拟机的指令, 然后在虚拟机(基于寄存器实现)上运行.使用一个采用增量策略的GC来管理内存1、Fast, 最快的脚本语言,l
转载 2024-03-13 22:59:11
130阅读
前言最近做的手游项目(Unity+tolua架构)快接近尾声了,功能差不多齐备之后开始对各种技术指标进行优化。Unity自带的Profiler能对C#的Cpu和内存使用状况进行比较好的分析,但是无法涵盖lua部分,很多人可能跟我一样,对lua部分的优化觉得无从下手。本人在网上搜了很多工具之后发现了这个很实用的工具,能够对内存消耗情况和lua和mono的GC进行很好的监测,废话不多说,一起来看。安装
转载 2024-03-07 10:47:59
307阅读
主要参考:https://www.lua.org/gems/sample.pdf更多内容可参考:http://lua-users.org/wiki/OptimisationTips知乎-Lua性能优化(二):CPU性能优化tabletable的频繁查找,尽可能使用local变量,不要在循环中做大量表的查找,例如不要在循环中用全局函数,不要使用math.floor这种,而是将它的值提前存储在局部变量
转载 2024-04-22 16:25:35
40阅读
  • 1
  • 2
  • 3
  • 4
  • 5