编辑回复: 非常感谢你的反馈,很好的意见,已和作者沟通调整。
作者回复: 内存优化有两个部分,一个是架构,这里包括设备分级,缓存管理,进程管理与Bitmap图片库的策略。
另外监控的确是最重要的,因为大部分的内存问题,特别是内存泄露,oom。更多的时候难点不在于解决,而在于如何发现它们。
作者回复: 怎么说呢,单从内存泄露可能就有各种各样的场景,不同应用情况也不一样。
在有限的边幅里面,我这边更加希望大家可以触达底层,这些问题的本质是怎么样?如何去发现它们,怎么样构造自己的测试体系。
当然后面也会考虑多加入一些参考链接
作者回复: 相似图片的确也有人搞过,但是是线下自动化时。
如果判断相似图片是非常成熟的算法,可以在网上搜到很多资料。
作者回复: mqtt不是非常清楚,微信使用的是mars,这个已经开源。
长连另外一个比较通用的方式是使用http2.0,后面的架构篇我们会有专门的讲
作者回复: 不知道这位同学说的根本和基础指的是哪些内容?是指pss rss uss这些的区分,以及low memory killer机制,内存分配原理这些吗?
因为内存这个话题已经很老了,网上和android developer都有大量这些内容,文中也给了一些参考资料。
内存优化文中其实讲了两部分内容,一部分是架构上的设计,例如设备分级,统一缓存,进程管理,以及图片库的使用。
另外主要讲的的确是监控,因为大部分的内存问题,比如泄露,某一时间分配过大,oom。他们其实解决都不难,难得是如何快速的发现它们。
也欢迎指出其他的意见
作者回复: 监控的时候会有堆栈,去重的话就交给对应的业务开发
作者回复: 可以参考崩溃分析的,将所有的线程名输出到日志中
作者回复: 这个重复bitmap分析是在服务器后台做的,目前是对所有bitmap数组直接计算hash的方法匹对
作者回复: 这个问题有点大,我们可以具体拆分一下。
目前我们在线上也没有做太细致的监控,不过对于ANR和卡顿日志会分析锁的问题。
对于崩溃日志会去自动分析线程和文件句柄的问题
作者回复: 指的是同一张图片,createbitmap多次。。在实际开发过程中,我们创建Bitmap的方式有很多种,不仅仅是setImageResource
作者回复: 我们是采用后者的