首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

阿里开源 Patrons:大型 32 位 Android 应用稳定性提升50%的“黑科技”

Jemalloc5.1(Android10 的内存分配器) 的脏页释放条件相比前代版本进行了修改,导致内存延迟释放,最终使得虚拟内存的水位居高不下。...当然,我们在写业务的时候并不需要关心内存是哪个内存分配器分配的,Android 9、10 使用的内存分配器均为 JeMalloc,静态链接在 libc 中。...针对以上观点,我查阅了一些资料,针对 Jemalloc5.1 延迟释放的解决方案包括: 编译的时候修改编译参数(不可行,无法决定用户手机中的 Android 系统的编译参数); 将 dirty_decay_ms...结合目前的资料来看,JeMalloc 可能并没有什么问题,但是在崩溃数据上展现出了一个奇怪的特征,就是 Top 1 的 crash 中,Android 10 和 11 的比例达到了 4:1 左右。...这个结论是否正确暂且按下不表,这里我做了第一次尝试:在 Android 10 中使用 Android 11 标配的 Scudo 分配器,而不使用 JeMalloc ,是不是就能解决这个问题了?

64630

可执行文件压缩

压缩可执行文件对嵌入式开发特别有用,但是延伸一下用来减少我们游戏行业里预编译的工具二进制包大小和Android/iOS的库也是蛮有用的。...,移除调试符号文件,开启最小化size优化(-Oz) 使用LLVM的全量LTO 使用xargo重新编译标准库(std)和核心库(core)(这个C/C++不容易模仿,而且编译选项十分难搞) 移除jemalloc...虽然C/C++默认也不是jemalloc,很多项目为了新能还是会用它) 移除panic的详情信息(这个仅适用于Rust) strip(由GNU的binutils提供),参考命令: strip [二进制...When the `system-alloc` feature is not used, do nothing, // retaining the default functionality (using jemalloc...(UPX要求二进制文件必须存在init段,但是android的.so可能没有) 或者也可以自定义初始化代码, extern "C" {void my_init(void){}} ,然后编译时在 Android.mk

2.3K10
领券