电子发烧友网 > 存储技术 > 正文

关于内存优化知识你知道多少呢?

2018年08月31日 10:36 次阅读

一、内存优化原则

为了优化应用内存,你应该知道是什么消耗了你应用的大部分内存,答案就是Texture(纹理)!它几乎占据了90%的应用内存。那么我们应该尽力去减小我们应用的纹理内存使用,否则我们的应用进程可能会被系统杀死。

为了减少内存警告,这里我们给出两个普遍的关于cocos2dx游戏内存优化的指导原则。

1)了解瓶颈,然后解决掉

什么样的纹理消耗了大部分应用的内存呢?或者说这些纹理消耗了多少内存呢?你不用去手工计算或者猜测。

这里我们正好有一个工具。它就是 Allocations & Leaks,在xcode中你长按Run按钮并且选择Profile去启动这两个工具。这里我们有个截图:

关于内存优化知识你知道多少呢?

你可以使用AllocaTIon工具去计算你应用的内存使用情况并且可以查看内存泄露情况。

你也可以用一些代码去获取游戏内存使用的一些有用的信息。

如下代码即可:

CCTextureCache::sharedTextureCache()-》dumpCachedTextureInfo();

如下所示:当你调用这些代码并且在DEBUG模式运行你的游戏的时候,在你的xcode console窗口你将会看到一些格式化的log信息

Cocos2d: cocos2d: “cc_fps_images” rc=5 id=3 256 x 32 @ 16 bpp =》 16 KB

Cocos2d: cocos2d: “XXX/hd/actor.pvr.ccz” rc=1059 id=4 2048 x 2048 @ 32 bpp =》 16384 KB

Cocos2d: cocos2d: CCTextureCache dumpDebugInfo: 2 textures, for 16400 KB (16.02 MB)

这些log显示了纹理的名字,引用数,id,大小以及像素的bit值,最重要的是它展示了内存使用情况。如上cc_fps_images消耗了16KB,actor.pvr.ccz消耗了16M内存。

2)不要过度优化

这是一个常规的优化规则。当你进行内存优化的时候,你应当进行一下权衡。因为有时图片质量和图片内存使用情况是相反的两边。所以千万不要过度优化。

二、内存优化等级

这里我们把cocos2dx内存优化划分成三个等级。在每个等级,我们有不同观点并且策略也是有些变化。

1、cocos2dx 客户端等级

这是我们可以关心的最重要的优化等级。因为我们在cocos2dx引擎上开发游戏,引擎自己就提供了很多可选择的优化方案。在这个等级上,我们可以做的工作最多。

首先,让我们看一下纹理优化

为了优化纹理内存的使用,我们必须知道什么因素影响了内存的使用情况。

有三个因素影响了纹理的内存使用。纹理格式(压缩的还是非压缩的),颜色,大小。

我们可以使用PVR格式的纹理来减少内存使用。最被建议的纹理格式是pvr.ccz,每色的bit值越高,画面质量就约好。但是也会消费很多内存。

那么我们使用颜色深度是RGBA4444的纹理来代替RBGA8888,这将会消费一半内存。

我们也会发现大纹理也会导致内存相关的问题。那么你最好使用适度的大小。

其次,让我们做一些关于声音的事情

有三个因素影响文件内存使用。是音频文件格式,比特率,和样本率

我们最希望音频文件时mp3格式。因为它被androidios都支持。并且它也被压缩并且硬件加速了。

你应该保证你的背景音乐文件大小在800KB一下。最简单的方式就是减少背景音乐播放时间并且重复调用。

你应该保持你的音频文件样本率在96-128kbps之间,并且比特率在44kHz就足够了。

最后,我们谈谈字体和粒子系统优化。

这里我们有两个建议:当使用BM字体显示游戏分数,在你的图片文件中选择最小的数字字符,例如:

如果你想只显示数字,你可以移除所有的字符。

粒子系统中,我们可以减少粒子数量来减少内存使用。

2、cocos2dx引擎等级

如果你不擅长OpenGLES和游戏引擎内核,你可以把这部分留个引擎开发者。如果你是一个开源游戏引擎爱好者,如果你已经做了引擎等级的一些优化,请告知引擎开发者们!

3、c++语言等级

在这个等级,我的建议就是写一些无内存泄露的代码。使用cocos2dx引擎内存管理工具并且尽最大努力避免内存泄露。

三、建议和技巧

1、一帧帧的加载游戏资源。

2、减少绘制调用。使用CCSpriteBatchNode

3、按照最大到最小的顺序的加载纹理

4、避开内存使用高峰、

5、使用加载界面来预加载游戏资源。

6、当不需要的时候释放无用的资源

7、当有内存警告的时候释放缓存的资源

8、使用texturePacker来优化纹理尺寸,格式,色彩深度值等等。

9、小心使用JPG文件

10、使用16位RBGA4444色彩深度的纹理

11、使用NPOT纹理代替POT纹理

12、避开加载大尺寸图片

13、使用1024*1024 NPOT pvr.ccz纹理图集而不是原生图片

技术专区

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

Intel发布公布了新的Xeon路线图,看其拥有...

今年第四季度,Intel将更新的Xeon Scalable(至强可扩展)家族,代号或者说架构为Cas...

发表于 2018-08-30 17:25 209次阅读
Intel发布公布了新的Xeon路线图,看其拥有...

在C语言中,如何分配浮点数的存储方式?

C语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,floa...

发表于 2018-08-28 16:32 127次阅读
在C语言中,如何分配浮点数的存储方式?

浅析计算机中物理内存的模型

个人感觉学这部分的知识应该首先在脑海中抽象出存储体系,因为无论磁盘,物理内存还是虚拟内存都是互相有联...

发表于 2018-08-28 16:29 108次阅读
浅析计算机中物理内存的模型

影驰gamer内存怎么样 一款非常出色的产品

如今的DIY硬件市场早已经从一味的追求高性能时代转至更多样化,除了性能外,更个性化的外观,更好的体验...

发表于 2018-08-28 11:11 108次阅读
影驰gamer内存怎么样 一款非常出色的产品

台电极光a30内存评测 DDR4内存入门首选

近期,台电将会发布一款名为极光A30的DDR4入门内存。今天就让大家来先睹为快吧。

发表于 2018-08-28 10:47 164次阅读
台电极光a30内存评测 DDR4内存入门首选

华为五款新品即将发售,新品性能微介绍

HUAWEI MateBook X Pro大容量版,带来512G容量,让你的大量文件存储更方便,让灵...

发表于 2018-08-27 14:29 1092次阅读
华为五款新品即将发售,新品性能微介绍

3D XPoint发展迅速,下一代存储技术之争越...

多年来,业界一直致力于各种新兴存储技术,包括纳米管RAM、FRAM、MRAM、相变存储器和ReRA...

发表于 2018-08-27 09:19 127次阅读
3D XPoint发展迅速,下一代存储技术之争越...

影驰内存怎么样 3000MHz高性价比内存

近日,影驰就发布了最新款的GAMER系列内存GAMER II-3000MHz,从名字就可以看出它与名...

发表于 2018-08-27 08:49 175次阅读
影驰内存怎么样 3000MHz高性价比内存

各大存储巨头实力分析,存储新势力还有机会?

目前,NAND价格正在开始下降,DRAM价格也将在未来几个季度内转头向下,这意味着我们可能会面临小幅...

发表于 2018-08-25 10:34 182次阅读
各大存储巨头实力分析,存储新势力还有机会?

DRAM和NAND闪存需求的持续增长,三星上半年...

8月21日,调研公司IC Insights发布报告称,由于DRAM和NAND闪存需求的持续增长,今...

发表于 2018-08-24 14:16 209次阅读
DRAM和NAND闪存需求的持续增长,三星上半年...

紫光内存ddr3评测 比较中规中矩

2017年个人认为从某种程度上是PC DIY正式衰落的元年,其中很大的因素就是因三星为首的一众厂商的...

发表于 2018-08-24 10:31 411次阅读
紫光内存ddr3评测 比较中规中矩

铭瑄内存条好不好 性价比最高的RGB内存

2017年,铭瑄开始试水内存市场,推出了终结者Q3 DDR4内存,主打性价比的马甲内存。今年7月,铭...

发表于 2018-08-23 10:19 225次阅读
铭瑄内存条好不好 性价比最高的RGB内存

深度分析Linux内存使用方法

一提到内存管理,我们头脑中闪出的两个概念,就是虚拟内存,与物理内存。这两个概念主要来自于linux内...

发表于 2018-08-20 09:00 852次阅读
深度分析Linux内存使用方法

英特尔计划以傲腾 + QLC产品组合重塑内存和存...

英特尔提出将以傲腾 + QLC 这一产品组合重塑内存和存储行业的愿景。通过将傲腾™ 和英特尔® QL...

发表于 2018-08-16 15:49 104次阅读
英特尔计划以傲腾 + QLC产品组合重塑内存和存...

SYS BIOS的概念及特点介绍

SYS BIOS简介--概览

发表于 2018-08-15 01:05 129次阅读
SYS BIOS的概念及特点介绍

换个液态硬盘多少钱 液态硬盘能扩内存吗

一般的液态硬盘120G也就100多块钱吧,不过现在液态硬盘的容量随便都是1-2T,当然一般都在500...

发表于 2018-08-14 10:36 157次阅读
换个液态硬盘多少钱 液态硬盘能扩内存吗

程序中内存应该如何分配?怎样进行动态内存分配?

程序在内存中是分段存储的。 代码段:存放语句转换的数字;程序运行时不可修改; 全局段:用来记录全局变...

发表于 2018-08-12 10:52 437次阅读
程序中内存应该如何分配?怎样进行动态内存分配?

浅谈操作系统的内存分配原则

编程的复杂性一直困扰着前端、高度平行的芯片。DARPA计划经理Tom Rondeau在早期的软件定义...

发表于 2018-08-11 09:50 98次阅读
浅谈操作系统的内存分配原则

2018第二季全球DRAM厂商营收龙虎榜

CINNO Research根据内存供应链业者第二季的运营情况分析,在经过第一季淡季效应影响及库存消...

发表于 2018-08-11 09:10 514次阅读
2018第二季全球DRAM厂商营收龙虎榜

紫光宣布国产DDR4内存年底提前推向市场,大陆地...

近日不少有关国产自主DDR4内存的报道,目前已有合肥长鑫、长江存储、福建晋华三家公司宣布2019年完...

发表于 2018-08-07 16:42 406次阅读
紫光宣布国产DDR4内存年底提前推向市场,大陆地...

EVM6678LE启动共享内存无法共享,请问是什么原因?

发表于 2018-08-07 07:42 35次阅读
EVM6678LE启动共享内存无法共享,请问是什么原因?

三星10nm级DDR4 SoDIMM内存,容量达...

三星宣布推出基于10nm级(指10~18nm)的DDR4 SO-DIMM内存模组,用于高性能笔记本产...

发表于 2018-08-06 16:38 138次阅读
三星10nm级DDR4 SoDIMM内存,容量达...

请问一个32位整数在内存中的地址为0乘100,值为0乘1234567是什么意思

发表于 2018-08-04 09:29 129次阅读
请问一个32位整数在内存中的地址为0乘100,值为0乘1234567是什么意思

寄存器比内存快的原理是什么?

计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,...

发表于 2018-08-02 16:17 432次阅读
寄存器比内存快的原理是什么?

预测:全球DRAM市场的数量将在2018年达到峰...

根据报道,业内人士的预测,预计全球DRAM市场的数量将在2018年达到峰值,2019年将出现供过于求...

发表于 2018-08-01 17:24 175次阅读
预测:全球DRAM市场的数量将在2018年达到峰...

NVMe协议访问能释放存储级内存性能和存储系统的...

主流企业存储供应商正在拥抱NVMe。HPE,NetApp,Pure Storage,Dell EMC...

发表于 2018-07-31 15:03 294次阅读
NVMe协议访问能释放存储级内存性能和存储系统的...

DRAM货源短缺虽然给买家带来沉重打击,却给供应...

三星公司作为本季度的市场王者,营收达到63亿美元,较上个季度增长6.8%且目前占据整体市场份额的44...

发表于 2018-07-31 14:41 81次阅读
DRAM货源短缺虽然给买家带来沉重打击,却给供应...

美光告福建晋华盗用技术,阻止中国开发自有的DRA...

据12月11日引述行业人士报道,日前,美光科技公司在美国加州的一家联邦地方法庭提交了诉状,指控中国台...

发表于 2018-07-31 14:31 401次阅读
美光告福建晋华盗用技术,阻止中国开发自有的DRA...

请问飞拍采图时出现两张同样的图片,怀疑是内存原因导致的应该怎么解决?

发表于 2018-07-31 11:30 108次阅读
请问飞拍采图时出现两张同样的图片,怀疑是内存原因导致的应该怎么解决?

请问为何printf函数为何会占用大量内存?附程序代码

发表于 2018-07-31 06:58 90次阅读
请问为何printf函数为何会占用大量内存?附程序代码

国产内存正在快速发展,引发了国外行业巨头们的恐慌

虽然技术上还有差距,但自主处理器、内存发展已经在努力追赶,这引发了行业巨头们的恐慌。

发表于 2018-07-30 16:15 168次阅读
国产内存正在快速发展,引发了国外行业巨头们的恐慌

紫光国微DDR4内存芯片年底就可推向市场,未来会...

国产内存制造商紫光国微在深交所互动平台上表示,目前国产DDR4内存芯片正在顺利研发中,紫光国微预计今...

发表于 2018-07-30 15:55 162次阅读
紫光国微DDR4内存芯片年底就可推向市场,未来会...

如何管理Linux 的内存分页?

内存是计算机的主存储器。内存为进程开辟出进程空间,让进程在其中保存数据。我将从内存的物理特性出发,深...

发表于 2018-07-28 08:24 654次阅读
如何管理Linux 的内存分页?

宜鼎国际推出全球首个全系列DDR4 2666嵌入...

工控与嵌入式储存解决方案领导厂商—宜鼎国际(Innodisk),今日宣布推出全球首个全系列DDR4 ...

发表于 2018-07-26 17:37 116次阅读
宜鼎国际推出全球首个全系列DDR4 2666嵌入...

三星第二代10nm级别工艺的LPDDR4X内存开...

根据报道,三星第二代10nm级别工艺的LPDDR4X内存已经量产,相比第一代,虽然性能没有提升,但是...

发表于 2018-07-26 16:56 219次阅读
三星第二代10nm级别工艺的LPDDR4X内存开...

内存价格持续暴涨,新内存管理方案出台势在必行

对于用户来说,想在想买内存简直是困难的,因为它的价格暴涨的已经离谱到难以接受的地步,更夸张的是,这个...

发表于 2018-07-25 16:55 297次阅读
内存价格持续暴涨,新内存管理方案出台势在必行

说说OnePlus6的强劲配置,让运行更快

加油们都知道自己手里的 OnePlus 6 打游戏的体验很顺畅是因为采用了 LPDDR 4X 8GB...

发表于 2018-07-25 14:48 881次阅读
说说OnePlus6的强劲配置,让运行更快

请问DM8127 rdk3.2 内存使用情况怎么查看?

发表于 2018-07-25 09:23 53次阅读
请问DM8127 rdk3.2 内存使用情况怎么查看?

请问在sysbios下如何找到内存段设置?

发表于 2018-07-25 07:56 73次阅读
请问在sysbios下如何找到内存段设置?

中国投资内存项目总预算达180亿,欲终结三星市场...

这一年多来内存价格的疯涨让太多人感到心痛,而问题的根源在于DRAM内存颗粒掌握在韩国三星、SK海力士...

发表于 2018-07-24 16:11 154次阅读
中国投资内存项目总预算达180亿,欲终结三星市场...

宜鼎推出业界首款宽温超矮版工控内存,以应对5G网...

2018年1月19日,全球工业与嵌入式存储技术领导厂商宜鼎国际(innodisk),近一年除布局物联...

发表于 2018-07-24 15:41 136次阅读
宜鼎推出业界首款宽温超矮版工控内存,以应对5G网...

发改委约谈三星,居高不下内存价格或将下降

从前年下半年开始DRAM和NAND这种存储元件已经连续涨价6个季度了,连续的涨价让手机和PC行业叫...

发表于 2018-07-23 18:01 434次阅读
发改委约谈三星,居高不下内存价格或将下降

中国为什么要花几亿元去制造一根内存?理由就在文中...

一提到DDR4内存,包括笔者在内的很多DIY玩家都是恨到牙痒痒,相较于前两年内存如今价格已经是原来...

发表于 2018-07-23 17:41 181次阅读
中国为什么要花几亿元去制造一根内存?理由就在文中...

铭瑄正式推出复仇者M3 RGB内存,具有12种灯...

复仇者M3灯效方面,预设有绚彩RGB灯效,5个独立光效区域,支持主板软件调控,12种灯效模式,和其他...

发表于 2018-07-20 15:48 784次阅读
铭瑄正式推出复仇者M3 RGB内存,具有12种灯...

关于Linux内存模型的介绍

在linux内核中支持3中内存模型,分别是flat memory model,Discontiguo...

发表于 2018-07-18 16:26 479次阅读
关于Linux内存模型的介绍

内存就是插在或固化在主板上的内存条吗?程序空间还...

在硬件工程师和普通用户看来,内存就是插在或固化在主板上的内存条,它们有一定的容量——比如64 MB。...

发表于 2018-07-17 17:35 383次阅读
内存就是插在或固化在主板上的内存条吗?程序空间还...

明年旗舰手机的三大配置:管你是苹果还是安卓,都需...

提起手机配置大家首先想到什么?屏幕、处理器、电池?没错这三个硬件配置最为重要,一个是重要的输入和输...

发表于 2018-07-16 11:37 221次阅读
明年旗舰手机的三大配置:管你是苹果还是安卓,都需...

Intel发飙,下一代Xeon至强服务器平台内存...

Intel将在今年晚些时候推出下一代Xeon至强服务器平台,代号“Cascade Lake”,仍然是...

发表于 2018-07-10 16:10 339次阅读
Intel发飙,下一代Xeon至强服务器平台内存...

【回顾往年CES】华硕在展会上首推4GB超大内存...

每一年的CES都会带给我们不同的惊喜,CES 2015也不例外。此次华硕携智能手机ZenFone 2...

发表于 2018-07-09 14:34 540次阅读
【回顾往年CES】华硕在展会上首推4GB超大内存...

做内层PCB不仅要会绕等长,你还应该了解哪些?

经常画高速板的同学都知道,10个高速板有9个要绕等长,而且内存出现的频率尤其频繁,整的现在画板子不...

发表于 2018-07-09 08:47 1317次阅读
做内层PCB不仅要会绕等长,你还应该了解哪些?

西数/金士顿等新上线的SSD性能你又知道多少?

4月6日消息,西部数据(Western Digital)宣布推出新款黑盘SSD。这款产品包括250...

发表于 2018-07-08 17:34 343次阅读
西数/金士顿等新上线的SSD性能你又知道多少?

美光在中国大陆内存市场陷入瘫痪原因分析

7月3日,福建省晋华集成电路有限公司(以下简称“晋华”)在其官网发布新闻称:福州市中级人民法院今日(...

发表于 2018-07-07 11:48 859次阅读
美光在中国大陆内存市场陷入瘫痪原因分析

中国已是全球最大的DRAM内存消费国

根据中国的反垄断法律,三星电子、SK海力士、美光如果被查实存在价格操纵行为,可被处以8亿美元到80亿...

发表于 2018-07-06 08:15 661次阅读
中国已是全球最大的DRAM内存消费国

中国反垄断部门突袭集邦咨询:内存价格猛涨,反垄断...

近两年来,DRAM内存颗粒与内存条价格一路猛涨,让整个行业苦不堪言,三星电子、SK海力士、美光三大...

发表于 2018-07-02 15:43 166次阅读
中国反垄断部门突袭集邦咨询:内存价格猛涨,反垄断...

对物理内存空间与线性空间了解

在硬件工程师和普通用户看来,内存就是插在或固化在主板上的内存条,它们有一定的容量——比如64 MB。

发表于 2018-06-30 10:58 530次阅读
对物理内存空间与线性空间了解

了解内存工作原理,及ROM、RAM、FLASH的...

偶然之间与同事谈论到ROM,RAM,FLASH一些知识,而突然之间当我们去说这些英文单词的话还真是粗...

发表于 2018-06-29 14:39 1232次阅读
了解内存工作原理,及ROM、RAM、FLASH的...

解决两种之间通信的十一种方法

进程通常被定义为一个正在运行的程序的实例,它由两个部分组成:  一个是操作系统用来管理进程的内核对象...

发表于 2018-06-29 11:29 543次阅读
解决两种之间通信的十一种方法

宜鼎推出业界首款宽温超矮版工控内存,积极抢攻5G...

全球工业与嵌入式存储技术领导厂商宜鼎国际(innodisk),近一年除布局物联网外,还加大对5G网...

发表于 2018-06-25 09:40 336次阅读
宜鼎推出业界首款宽温超矮版工控内存,积极抢攻5G...

UDIMM、RDIMM、SODIMM以及LRDI...

UDIMM,Unbuffered DIMM,定位于 桌面市场,指地址和控制信号没有经过缓冲器,没有...

发表于 2018-06-24 09:43 931次阅读
UDIMM、RDIMM、SODIMM以及LRDI...

vivo NEX即将登陆印度市场:7月发售

上个月,vivo在印度发布了X21屏幕指纹版。在发布会结束后,vivo高管接受91Mobile采访时...

发表于 2018-06-23 10:38 1671次阅读
vivo NEX即将登陆印度市场:7月发售

【新闻】内存三巨头涉嫌操纵价格 面临中国最高80亿美元重罚

发表于 2018-06-22 17:00 509次阅读
【新闻】内存三巨头涉嫌操纵价格 面临中国最高80亿美元重罚

几种新内存技术有望在嵌入式领域出现契机

新兴内存可望在嵌入式应用中找到大量市场,取代在微控制器(MCU)与ASIC中储存程序代码的NOR闪存...

发表于 2018-06-22 14:08 736次阅读
几种新内存技术有望在嵌入式领域出现契机

2018LAM一季度财报:业绩持续攀升,来源于内...

LAM一季度季报电话会议内容显示,2018年第一季度实现营收28.92亿美元,环比增加了12%。非...

发表于 2018-06-21 18:57 239次阅读
2018LAM一季度财报:业绩持续攀升,来源于内...

程序员对内存的清晰理解

在C和C++语言开发中,指针、内存一直是学习的重点。因为C语言作为一种偏底层的中低级语言,提供了大量...

发表于 2018-06-21 15:17 712次阅读
程序员对内存的清晰理解

卡在Starting kernel ...,内存与nand都为128M - 0x08000000,文件系统未配置,请问应该如何解决?

发表于 2018-06-21 05:39 167次阅读
卡在Starting kernel ...,内存与nand都为128M - 0x08000000,文件系统未配置,请问应该如何解决?

系统内存编辑器

In-System Memory Content Editor

发表于 2018-06-20 00:30 541次阅读
系统内存编辑器

Linux内存配置:overcommit的设置

使用版本管理工具的工程师都熟悉commit的含义,就是向代码仓库提交自己更新的意思,对于这个场景,实...

发表于 2018-06-14 11:45 694次阅读
Linux内存配置:overcommit的设置

有一种管理CPU快速存取内存的新流程,耗能减少高...

这种想法本身并不是全新的概念。在IBM的一些Cell处理器以及索尼的PlayStation 3(基于...

发表于 2018-06-13 08:34 1247次阅读
有一种管理CPU快速存取内存的新流程,耗能减少高...

请问内存不够,应该怎么修改?

发表于 2018-06-13 02:12 125次阅读
请问内存不够,应该怎么修改?

想问下大家有没有遇到过 时间消息没又响应 便执行的 不是不是程序的内存管理越界了?

发表于 2018-05-25 16:29 403次阅读
想问下大家有没有遇到过 时间消息没又响应 便执行的 不是不是程序的内存管理越界了?