首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Lua的GC和实时游戏

Lua的GC和实时游戏
EN

Stack Overflow用户
提问于 2010-10-31 18:25:15
回答 3查看 5.1K关注 0票数 7

据我所知,跟踪GC在完成GC时无法避免线程阻塞。

我用过XNA+C#,GC时间是不可能去掉的。所以我改用低级语言C,但我意识到我需要脚本语言。我在考虑Lua,但我担心Lua的GC机制。Lua正在使用增量跟踪GC,线程阻塞也应该如此。

那么我应该如何在实时游戏中处理这个问题呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-08 21:52:41

Lua的强大之处在于它不会妨碍您的工作。想要课程吗?可以使用metatables构建。想玩沙箱游戏吗?使用lua_setfenv

至于垃圾收集器。首先按原样使用它。如果以后发现性能问题,请使用lua_gc对其行为进行微调。

下面是一些例子:

  • 关闭垃圾收集器在那些时间的减速将是一个问题。
  • 让垃圾收集器关闭,只有当游戏逻辑说你有一些空间,你的每秒计数步进。你可以预先调整步长,或者在收集器上发现最优的步长,并在停止点执行完整的收集,即加载屏幕或剪切场景或在热座游戏中轮流更改。

您还可以考虑另一种脚本语言。Squirrel非常努力地尝试成为第二代Lua。它试图保留Lua的所有好特性,同时抛弃它的任何设计错误。两者之间最大的区别之一是squirrel uses reference counting而不是垃圾收集。事实证明,引用计数可能比垃圾收集慢一点,但它是非常确定的(AKA实时)。

票数 10
EN

Stack Overflow用户

发布于 2010-11-02 22:36:18

正确的处理方法是:

  1. 写了一个小原型,里面只有你想测试的核心内容。
  2. 对它进行了大量的剖析,再现了游戏中可能发生的不同场景(大量可用内存,可用内存很少,不同数量的线程,诸如此类)
  3. 如果你找不到可见的瓶颈,你可以使用Lua。否则,您将不得不寻找替代解决方案(可能是Lisp或Javascript)
票数 3
EN

Stack Overflow用户

发布于 2014-02-26 22:55:17

您可以修补Lua GC,以便对每个收集周期进行时间限制。例如:http://www.altdevblogaday.com/2011/07/23/predictable-garbage-collection-with-lua/

我相信,在收集非常大的表时,仍然有可能有很长的GC步长。因此,您需要采用一种避免大表的编程风格。

下面的文章讨论了使用Lua进行实时机器人控制的两种策略(1.不生成垃圾,或者2.使用O(1)分配器并在GC收集运行时进行调优):https://www.osadl.org/?id=1117

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4064451

复制
相关文章
Minor GC、Major GC和Full GC之间的区别
在 Plumbr 从事 GC 暂停检测相关功能的工作时,我被迫用自己的方式,通过大量文章、书籍和演讲来介绍我所做的工作。在整个过程中,经常对 Minor、Major、和 Full GC 事件的使用感到困惑。这也是我写这篇博客的原因,我希望能清楚地解释这其中的一些疑惑。
程序猿DD
2018/12/24
9960
游戏数据实时监控和分析[通俗易懂]
为了更好的了解到游戏运行时的状态,对相关的功能和数据进行分析是很重要的,设计了本系统。
全栈程序员站长
2022/08/27
9450
游戏数据实时监控和分析[通俗易懂]
Minor GC、Major GC 和 Full GC 之间的区别
在 Plumbr 从事 GC 暂停检测相关功能的工作时,我被迫用自己的方式,通过大量文章、书籍和演讲来介绍我所做的工作。在整个过程中,经常对 Minor、Major、和 Full GC 事件的使用感到困惑。这也是我写这篇博客的原因,我希望能清楚地解释这其中的一些疑惑。
芋道源码
2019/10/17
5830
Minor GC、Major GC和Full GC之间的区别
在 Plumbr 从事 GC 暂停检测相关功能的工作时,我被迫用自己的方式,通过大量文章、书籍和演讲来介绍我所做的工作。在整个过程中,经常对 Minor、Major、和 Full GC 事件的使用感到困惑。这也是我写这篇博客的原因,我希望能清楚地解释这其中的一些疑惑。
爱撸猫的杰
2019/03/28
1.9K0
Minor GC、Major GC和Full GC之间的区别
【Unity游戏开发】浅谈Lua和C#中的闭包
  目前在Unity游戏开发中,比较流行的两种语言就是Lua和C#。通常的做法是:C#做些核心的功能和接口供Lua调用,Lua主要做些UI模块和一些业务逻辑。这样既能在保持一定的游戏运行效率的同时,又可以让游戏具备热更新的功能。无论我们有意或者无意,其实我们经常会在Unity游戏开发中使用到闭包。那么,马三今天就要和大家来谈谈Lua和C#中的闭包,下面首先让我们先来谈谈Lua中的闭包。
马三小伙儿
2018/09/12
2.5K0
Lua游戏开发之时区问题
目前大部分游戏都采用了Lua语言进行功能开发,在进行多语种发行的时候就会遇到时区显示的问题。以韩国版本为例,场景如下:
meteoric
2018/11/20
2.1K0
【游戏开发】小白学Lua(上)
  在很多游戏中,脚本语言是不可或缺的一部分,很多游戏都使用到了Lua,js,python一类的脚本,脚本语言可以在很多方面给开发进程带来帮助。脚本语言可以作为初始化文件读入变量和游戏数据的一个快速而方便的方法。它们通常因为具有节省编译时间提高生产效率、提高创造性和拓展性的有点而受到众多游戏开发厂商的青睐。在本篇博客中,马三将和大家一起学习一下Lua这门脚本语言。
马三小伙儿
2018/09/12
1.8K0
Nginx+lua+mysql实时存日志
准备材料 Nginx.1.12安装包http://nginx.org/en/download.html mysql 自行安装 Lua 相关包 LuaJIT http://luajit.org/download.html ngx_devel_kit https://github.com/simpl/ngx_devel_kit/tags ngx_lua https://github.com/openresty/lua-nginx-module/tags pcre https://sourceforge
YG
2018/05/23
2.4K0
lua 和c的调用
lua中使用c动态库,像luacjson(支持unicode),luasocket,都是以动态链接库的形式在lua中使用的,至于怎么写这些动态链接库很少有教程说到,下面我就说说如何把c文件编译成动态库。
渴望飞翔的猪
2022/07/17
7220
Minor GC、Major GC和Full GC有何不同
目前,这些术语无论是在 JVM 规范还是在垃圾收集研究论文中都没有正式的定义。但是我们一看就知道这些在我们已经知道的基础之上做出的定义是正确的,Minor GC 清理年轻带内存应该被设计得简单:
余生大大
2022/11/02
5500
Lua游戏开发参考资料收集
List of game engines that use lua: 2D Agen (Lua; Windows) Blitwizard (Lua; Windows, Linux, Mac) Cocos2d-x (C++/Lua/JS; Windows, Linux, Mac; iOS/Android/BlackBerry) Corona (Lua; Windows, Mac; iOS/Android) EGSL (Pascal/Lua; Windows, Linux, Mac, Haiku) G
meteoric
2018/11/19
8820
【Unity游戏开发】Lua中的os.date和os.time函数
  最近马三在工作中经常使用到了lua 中的 os.date( ) 和 os.time( )函数,不过使用的时候都是不得其解,一般都是看项目里面怎么用,然后我就模仿写一下。今天正好稍微有点空闲时间就好好地收集了一下相关资料并学习了一下,并将学习结果记录成此博客。
马三小伙儿
2018/09/12
3.5K0
【Unity游戏开发】Lua中的os.date和os.time函数
.NET GC 实时监控工具 dotnet gcmon 介绍
今天介绍一个新的诊断工具 dotnet-gcmon, 也是全局 .NET CLI 工具, 它可以监控到 .NET 程序的 GC, 能获取到的信息也很详细, 另外 maoni 大佬也是其中的开发者之一。
全球技术精选
2021/11/30
4870
.NET GC 实时监控工具 dotnet gcmon 介绍
Lua和Luajit
一、什么是lua&luaJit lua(www.lua.org)其实就是为了嵌入其它应用程序而开发的一个脚本语言, luajit(www.luajit.org)是lua的一个Just-In-Time也就是运行时编译器,也可以说是lua的一个高效版。 二、优势 1)lua是一个免费、小巧、简单、强大、高效、轻量级的嵌入式的脚本语言,lua当前的发行版本5.3.1只有276k。 2)它是用C语言开发的项目,所以可以在大部分的操作系统上运行 3)lua是目前速度最快的脚本语言,既可以提升语言的灵
全栈程序员站长
2022/11/08
1.6K2
Lua Lua Lua!!!
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
云深无际
2022/02/09
3.6K0
Lua Lua Lua!!!
基于Lua+Kafka+Heka的Nginx Log实时监控系统
摘自:空谷幽兰 ( http://mlongbo.com/ ) , CSDN 背景 在我们的系统架构中,Nginx作为所有HTTP请求的入口,是非常重要的一层。每天产生大量的Nginx Access Log,闲置在硬盘上实在是太浪费资源了。所以,能不能把Nginx日志利用起来,实时监控每个业务的访问趋势、用户行为、请求质量和后端异常呢,这就是本文要探讨的主题。 目的 1. 错误码告警(499、500、502和504); 2. upstream_response_time超时告警; 3. request_
大数据文摘
2018/05/21
1.5K0
lua 和 cpp 互调
例子中涉及为 lua 编写 so,(lua require 加载) 需要修改 lua/src 下的makefile cppflag 加 -FPIC, 这样后续链接so才不会报错
orientlu
2018/12/24
9000
点击加载更多

相似问题

Lua,游戏状态和游戏循环

98

对于游戏这样的软实时应用,Haskell的GC性能如何?

35

Lua,设置__gc的顺序问题

12

为游戏和其他实时应用程序调整.NET 4.5GC的常见方法?

10

Lua用户数据gc

25
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文