如何优化.so mmap内存占用
1)如何优化.so mmap内存占用
2)模拟器下物理碰撞失效
3)Unity RenderTexture的释放在安卓上并不能使GL内存完全回落
4)数字人中,怎么做到胡子固定在嘴巴皮肤上
这是第319篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。
Memory
Q:项目PSS内存过高,使用adb指令抓取内存构成,发现.so mmap部分达到了180MB。这块有没有优化建议?
A1:可以从以下三个方向查一下:
1. 泛型Template用的是否较多
2. 自动化生产的代码是否较多
3. Lua生产的Wrapper代码是否较多
感谢小ben@UWA问答社区提供了回答
A2:还有以下两点:
1. 删除无用插件、代码
2. IL2CPP是否进行裁剪
感谢郑骁@UWA问答社区提供了回答
Physics
Q:在雷电模拟器下,有大概率车与动态创建物体没碰撞,但是很奇怪的是某些相同Layer有的可以碰撞。
后面直接空场景打包模拟器运行,创建cube + rigidbody赋值不同Layer模拟,有时候是有的Layer之间全部没有碰撞,还会出现同一个运行每次会碰撞的Layer都不一样。
查了好久没啥思路,有没有大佬遇到相似问题?
以上问题有哪位大拿也曾经做过类似的测试,欢迎转至社区交流分享
Memory
Q:Unity RenderTexture的释放在安卓上并不能使GL内存完全回落?
Unity版本:2020.3.21.f1
测试机:HUAWEI P30
内存统计工具:Perfdog
问题详情:
情况1:创建RT并立刻卸载,此时GL内存完全回落。
情况2:创建RT不卸载,此时GL上升并稳定。再创建RT并立刻卸载,此时GL上升,但回落时(也有可能不回落)不会回到之前位置,会有一部分残留,类似于泄漏的情况。
想请问下为什么会发生这种情况?
我搭建了一个测试场景,主要测试了两个函数,第一个函数只生成RT不卸载、第二个函数生成RT并立刻卸载。
在真机上测试结果:
可以看到前三次,调用方法2对应了情况1,此时内存回落正常。但在调用方法1后再调用方法2,则会产生内存无法回落到原位置的情况。
目前查到的资料:参考了UWA上的一篇文章《分享一次查找GfxDriver内存暴涨的经历》
里面是这样解释的:
对于GL显存,里面说到回落不到原位置的原因是只卸载了Main Memory,而不卸载Pinned Memory,那有什么方法卸载掉Pinned Memory使内存完全回落的方法吗?
我对Main Memory和Pinned Memory具体是什么不太了解,想请教一下大家。
以上问题有哪位大拿也曾经做过类似的测试,欢迎转至社区交流分享
Animation
Q:数字人中,怎么做到胡子固定在嘴巴皮肤上?口型控制应用时,胡子怎么跟着嘴巴皮肤同步运动变形?
A:在数字人模型中,胡子的运动变形可以通过在嘴巴皮肤模型上添加骨骼来实现。首先,您需要在嘴巴皮肤模型上创建一些骨骼,并将它们附着在相应的位置。然后,您可以使用骨骼动画功能,在口型控制时通过控制骨骼的运动来实现胡子的跟随变形。
为了保证胡子能够固定在嘴巴皮肤上,您可以在创建骨骼时,在骨骼根部和嘴巴皮肤模型之间添加控制点(Control Point)。控制点可以用来连接骨骼和嘴巴皮肤,并使得骨骼的运动对嘴巴皮肤产生影响。通过添加控制点,您就可以在保证胡子固定的同时,让胡子能够随着嘴巴皮肤的变形而变形。
感谢Hyhom@UWA问答社区提供了回答
封面图来源于网络
今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。
官网:www.uwa4d.com
官方问答社区:answer.uwa4d.com
相关文章
- c++ 在内存中加载 exe/dll (不使用CreateProcess、LoadLibrary 等 API)
- .Net Core内存回收模式及性能测试对比
- 如何为swarm中的service设置需要cpu和内存?
- python如何给内存和cpu使用量设置限制
- Instruments如何看Mono内存分配
- 通俗易懂,C#如何安全、高效地玩转任何种类的内存之Span的脾气秉性(二)。 异步委托 微信小程序支付证书及SSL证书使用 SqlServer无备份下误删数据恢复 把list集合的内容写入到Xml中,通过XmlDocument方式写入Xml文件中 通过XDocument方式把List写入Xml文件
- 通俗易懂,C#如何安全、高效地玩转任何种类的内存之Span。 给萌新的Flexbox简易入门教程 浅谈Quartz定时任务调度 浅谈JavaScript之Event(上篇) 探索JavaScript数组奥秘 【详解JavaScript系列】JavaScript之函数(一) C# Oracle.ManagedDataAccess 批量更新表数据 VS2015常用快捷键总结
- Python中使用psutil查看内存占用的情况(内存)
- Spark开发-Spark内存溢出原因以及解决方式
- linux【内存】2. 如何内存中的cache与buffer
- LINUX类主机JAVA应用程序占用CPU、内存过高分析手段
- Linux有问必答:如何检查Linux的内存使用状况
- Linux基础:如何找出你的系统所支持的最大内存
- Redis第四讲 Redis内存淘汰策略与过期数据如何处理
- Redis内存数据满了导致宕机
- Linux系统如何查看内存
- Linux下查看某一进程所占用内存的方法
- pthread线程内存布局
- 内存缓存 Gcache VS Caffeine源码详解
- 面试突击(八)——JVM的结构及内存模型,是怎么划分的?
- Vue优化:常见会导致内存泄漏问题及优化
- JavaScript如何工作:内存管理+如何处理4个常见的内存泄漏
- 内存/SSD继续狂涨:如何出手购买?心酸