能效内存优化
更新时间: 2026/02/09
在Gitcode上查看源码内存分析方法
分析内存,首先得确定组件是什么,以能效子系统组件为例,通过ps aux | grep energy,查看当前的进程号 随后可通过以下方法对内存的使用情况进行具体查看和分析
1.pmap
pmap -x pid 通过该方法可以看到整体内存的变化情况,若发现总内存在增长,可对上述两次数据进行复制粘贴到beyond compare中进行比较,查看是哪一块的内存在进行增长。 若子系统中组件内存在一定时间内出现减少的趋势(存在主动GC的机制),但共享内存在持续增长,则无需再对子系统进行分析,可确认是共享内存增长导致子系统内存增长。
注:若通过pmap命令无法确认组件内存是否存在递增再递减的平稳趋势,可通过以下skynet console命令确认
2.skynet console
- 在xshell中,新建一个telnet窗口 端口号通过
netstat -anp |grep 400命令确定 - 修改终端显示格式,否则会出现串行问题 终端--换行符--发送修改为CLRF,收到修改为LF
- 连接后,键入mem查看内存 若分析后发现,内存存在增长和降低的趋势,整体趋势平稳,则说明组件内存不会持续增长
能效子系统内存优化措施
能效子系统主要基于内存碎片进行修改,识别以下优化点
- 频繁创建的local变量 在while死循环中,频繁创建local变量,导致内存缓慢增长,在创建local变量时需要将其放到循环外,使其仅被创建1次
- 单例对象 单例对象在构造函数中已经初始化了,在使用时直接使用单例对象,而不需要再通过local变量重新引用一次单例对象
- local变量的创建时间 若存在条件满足则直接退出,则无需在条件执行前创建local变量
- 没必要的local变量 对于仅使用一次的变量,无需通过local创建,应直接使用
- 频繁使用的变量 对于频繁使用的变量,可将其修改为self变量