本文链接: https://blog.csdn.net/feather_wch/article/details/131545501
云笔记链接: https://note.youdao.com/s/YcbbhAYK
内存抖动
1、内存抖动是什么?
2、String拼接和内存抖动
public void test(String[] args){
String result = null;
for(int i = 0; i < args.length; i++){
result += args[i];
}
}
3、内存抖动用什么工具?
4、Memory Profiler的Capture heap dump的作用?
5、Memory Profiler的Record java/kotlin allocations的作用?
6、shallow sizes是什么?
7、RtmpPackage不可以循环外只创建一个
对象池
8、对象池有哪些场景有用到?
9、自己如何设计实现对象池
Glide对象池原理
10、byte数组的对象池需要满足的条件
11、Glide LruArrayPool怎么实现的?
12、byte[]数组会包装为LinkedEntry对象
13、为什么要使用TreeMap?
14、Glide LruArrayPool缺陷?实战数据对比
15、Glide如何进一步优化?
16、SparseArray是什么?
内存泄漏
1、内存泄漏用什么工具监控?
2、Memory Profiler如何检查内存泄漏?
3、动画+onVisibilityChanged+透明Activity+IdleHandler导致的内存泄漏分析
4、ActivityClientRecord是什么?
5、ActivityClientRecord在什么地方会赋值?什么地方清除?
最终建议
如何避免内存抖动?
- 不在循环内进行String的+=操作
课外知识
- 研究GC三种算法具体内容和CMS各个阶段