查看: 2970|回复: 16
打印 上一主题 下一主题

[其他] 关于游戏内存不足闪退的讨论和建议

[复制链接]

2089

活跃

2866

人气

0

军饷

一呼百应

Rank: 11Rank: 11Rank: 11Rank: 11

积分
1019
跳转到指定楼层
楼主
发表于 2019-9-28 00:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自:湖北

登录论坛,更多趣闻美图好福利!

您需要 登录 才可以下载或查看,没有帐号?注册

x
今天又内存不足了,客户端闪退,导致错过了一个BOSS,少了好多领悟,心好痛。其实关于这个问题,一直都没有很好的解决,当然,这个问题也确实很难处理。
基于我在相关领域的一些经验,我认为内存不足客户端崩溃,差不多以下三点原因
1.真的内存不够了。
但是我的机器内存是16G的,除去操作系统占用部分内存,我不相信16G内存还不够用,毕竟是家用PC机,不是服务器,16G内存绝对够用了。所以我个人猜测,是产生了内存泄露
什么是内存泄露呢?
首先,游戏里面的任何东西,都需要先申请一片内存,然后基于内存进行操作。
比如,游戏里面一个BOSS,就是在内存中先申请一块区域,保存BOSS的相关信息,然后BOSS的移动、攻击都是基于这一块内存区域进行操作。当BOSS被干掉的时候,就需要吧这块内存区域清除,或者说回收。如果不进行内存回收,那么可用内存会越来越少,最后就会发现内存不足,程序崩溃。这种该释放的内存没有得到释放导致内存不足的情况,我们称为内存泄露。
2.空指针
还是接着上面的例子,我们在内存中申请一块区域保存BOSS信息,保存之后怎么操作呢?任何的内存空间,都是有地址的,比如32位系统的寻址空间是2的32次方,那么32位系统的内存地址是不大于2的32次方的一个数字。每一个内存空间,都有一个对应的内存地址指向它,我们称这种内存地址为指针。通过指针,就能操作内存中的数据,从而操作BOSS的移动、攻击等。如果我们在操作指针的时候,这个指针并没有指向任何内存空间,而是指向的一个空值,就会出现空指针的异常,导致程序退出。
3.野指针
继续套用上面的例子,为一个BOSS申请一块内存,得到一个指向该内存区域的指针。当BOSS挂掉,将该内存回收。但是回收的同时,指针本身还继续保留,那么当别的地方申请了这一块内存的同时,原指针就可以继续对这一块数据操作,就有可能产生冲突,这样可能会引发问题。注意是可能,意思是程序运行99次没问题,但是第100次就挂了,客户端崩溃了。这种情况是随机出现的。

出现以上三种情况,一般都是代码写的不够严谨,对于内存的处理不够到位。如果能找到具体的代码位置,解决起来还是很容易的。但是游戏发展到现在,代码已经很庞大了,可能都不比OS内核的代码要少,所以很难定位具体问题在哪。
基于以上,个人提一个建议:
当程序崩溃的时候,是可以生成一个dump文件的,该文件会记录程序崩溃前的堆栈信息。如果发生了客户端崩溃,可以弹出一个会话框,让玩家选择是否上传文件,当玩家点击上传,就将dump文件提交给服务器,KFZ的工程师拿到dump文件,就可以分析出大致哪里出问题了,也许能找到一些原因能进行修复。


1万

活跃

8398

人气

0

军饷

解甲挂印

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

积分
7917
沙发
发表于 2019-9-28 01:02 | 只看该作者 来自:安徽
我感觉不是代码引起的内存数据异常,而是加载和释放的问题。
游戏内场景人多的时候,每个玩家的出现都要在内存里加载这个玩家所有的数据,当这个玩家离开此场景的时候,这个玩家的内存数据没有释放,导致内存加载越来越多。
比如就像Windows系统加载天下3游戏的时候,占用内存,当你关闭天下3游戏的时候,内存就会释放。如果不释放会如何?就会占满内存。

3605

活跃

2079

人气

0

军饷

大荒荣誉居民

Rank: 16Rank: 16Rank: 16Rank: 16

积分
1889
板凳
发表于 2019-9-28 01:16 | 只看该作者 来自:广东
楼主可以到客服中心提单反馈一下。http://tx3.gm.163.com/

7788

活跃

2万

人气

0

军饷

贵极思道

Rank: 16Rank: 16Rank: 16Rank: 16

积分
5482
4#
发表于 2019-9-28 02:14 | 只看该作者 来自:四川
现在比以前好点了吧。。以前那个内存优化才是坑,基本不释放内存,不过这周更新bug太多了,以至于出现很多问题修复不知道彻底了没

1610

活跃

1782

人气

20

军饷

一飞冲天

Rank: 9Rank: 9Rank: 9

积分
792
5#
发表于 2019-9-28 02:35 | 只看该作者 来自:江苏
九成九就是内存泄露,但这个范围太大了,我估摸着kfz大概也知道问题具体出在哪,但以现有的开发人力来说,工时太长,问题没严重到逼迫他们不得不考虑这个或这些bug

2064

活跃

298

人气

0

军饷

凤栖于梧

Rank: 8Rank: 8

积分
635
6#
发表于 2019-9-28 02:59 | 只看该作者 来自:北京
我觉得内存不足仅仅只是个崩溃提示信息 程序员 你懂的

1万

活跃

9407

人气

0

军饷

贵极思道

Rank: 16Rank: 16Rank: 16Rank: 16

积分
5237
7#
发表于 2019-9-28 07:52 | 只看该作者 来自:北京
很奇怪我的旧笔记本win10  16G内存很少掉线,新电脑win10  32G内存经常掉  尤其挂机必掉   

1558

活跃

312

人气

0

军饷

凤栖于梧

Rank: 8Rank: 8

积分
620

太初神兵收获幸福

8#
发表于 2019-9-28 09:11 | 只看该作者 来自:黑龙江
我16G开着一个号还内存不足呢

2120

活跃

1260

人气

0

军饷

横空出世

Rank: 10Rank: 10Rank: 10

积分
859
9#
发表于 2019-9-28 09:35 | 只看该作者 来自:江苏
重做系统

3690

活跃

8374

人气

80

军饷

从者云集

Rank: 12Rank: 12Rank: 12

积分
1719

十年大荒·纪念勋章

10#
发表于 2019-9-28 09:40 | 只看该作者 来自:河北
现在报错确实会有上传错误提示。但是断开网络也能上传。其他的就不说了?

5586

活跃

1万

人气

0

军饷

威加海内

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
4035
11#
发表于 2019-9-28 10:40 | 只看该作者 来自:四川
内存不足,其实很好解决的,只是大部分人不用简单的办法,你说简单了他不信,非要去信那些非常复杂的步骤

什么虚拟内存啊,兼容模式啊,加内存啊,这些都没啥改变,设置完了还是提示不足,就来骂垃圾游戏

一般来说,内存就是加载太多导致数据塞满了,崩溃,解决办法就是少加载

启动游戏之前,所有特效都关闭,调最低,等启动后,主玩的号再根据需要慢慢调特效,这样出现不足的情况可以降低99%

除了挂机1天,和去人非常多的地方,还有就是高特效启动,这些最容易不足,避免了就不会出现了

1万

活跃

2万

人气

25

军饷

伐肆八荒

Rank: 14Rank: 14Rank: 14Rank: 14

积分
3641

游戏热爱者

12#
发表于 2019-9-28 11:07 | 只看该作者 来自:吉林
涨知识了

7788

活跃

2万

人气

0

军饷

贵极思道

Rank: 16Rank: 16Rank: 16Rank: 16

积分
5482
13#
发表于 2019-9-28 11:23 | 只看该作者 来自:四川
看看摆摊的怎么会没事呢把所有调最低,勾个极简模式优化也可以勾,挂机几天都不掉所以问题在哪呢

2858

活跃

2414

人气

0

军饷

一呼百应

Rank: 11Rank: 11Rank: 11Rank: 11

积分
1475
14#
发表于 2019-9-29 10:28 | 只看该作者 来自:浙江
这个真的没见过,摆摊从周三更新摆到下周三都不怎么会掉线(早上8点偶尔掉),尽量只开技能特效,其他特效开了容易出问题,内存不足的原因太多了,你们出问题其他人没出,你让kfz怎么想。

1806

活跃

2633

人气

0

军饷

凤栖于梧

Rank: 8Rank: 8

积分
621
15#
发表于 2019-9-29 10:52 | 只看该作者 来自:广东
逝水钓帝女 发表于 2019-9-29 10:28
这个真的没见过,摆摊从周三更新摆到下周三都不怎么会掉线(早上8点偶尔掉),尽量只开技能特效,其他特效 ...

这个是普遍现象,游戏问题,内核太旧了,如果是64位就不会有这种问题

5558

活跃

3467

人气

0

军饷

伐肆八荒

Rank: 14Rank: 14Rank: 14Rank: 14

积分
3201
16#
发表于 2019-9-29 10:55 | 只看该作者 来自:广东
最近更新  游戏 遇到很多问题    开着高光进战场  立马全屏白   啥都看不见 关了就好了

4238

活跃

2566

人气

0

军饷

从者云集

Rank: 12Rank: 12Rank: 12

积分
1629
17#
发表于 2019-9-29 11:15 | 只看该作者 来自:四川
自从上周更新以来 每天都遇到内存不足闪退几次 但是我内存很足!也修复过,还是这样,在人多点的地方就GG
您需要登录后才可以回帖 登录 | 注册

本版积分规则


快速回复 返回顶部 返回列表