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