最后
总之啊,家里没矿的同学们,如果你们想以后的日子过得好一些,多想想你们的业余时间怎么安排吧;
技术方面的提升肯定是重中之重,但是技术外的一些“软实力”也不能完全忽视,很多时候升职确实是因为你的技术足够强,但也与你的“软实力”密切相关
在这我也分享一份大佬自己收录整理的 Android学习PDF+架构视频+面试文档+源码笔记 ,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅并给下属员工学习的精品资料。在脑图中,每个知识点专题都配有相对应的实战项目,可以有效的帮助大家掌握知识点。
总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习
相信自己,没有做不到的,只有想不到的
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
解决:使用静态内部类
3.Handle造成的内存泄露
解决:使用静态内部类+activity弱引用
4.new 一个线程造成的
使用静态内部类
5.webview造成的
通过killprocess杀掉进程解决
总结一下:大部分都是非静态内部类造成的
Java的4种对象引用:
强引用 StrongReference (宁愿抛出oom错误,让程序终止,GC(垃圾回收器)也不会回收)
软引用 SoftReference (内存足够,GC不会回收,内存不够的时候才回收)
弱引用 WeakRefrence (当垃圾回收器回收的时候,不区分内存够不够,都会回收)
虚引用 :没有任何引用,随时可以回收
1、leakcanary的原理
2、Activity的泄露监测机制
leakcanary的原理(利用弱引用来监控activity):
1、Activity Destroy之后将它放在一个WeakReference弱引用中
2、这个WeakReference关联到一个ReferenceQueue(引用队列)
3、查看ReferenceQueue队列是否存在activity的引用
4、如果Activity泄露了,Dump出heap信息,然后再去分析泄露路径
软引用和弱引用对象被GC回收了,Java虚拟机会把这个引用加入到与之关联的引用队列(ReferenceQueue)中。
源码流程:
1、创建RefWatcher,调用ActivityRefWatcher.install,启动一个ActivityRefWatcher,ActivityRefWatcher就是为了监视Activity的回收情况
2、通过ActivityLifecycleCallbacks对象把activity的onDestroy生命周期和ActivityRefWatcher类相关联。
3、最后在线程池中分析内存泄露
leakcanary如何在线程池中分析内存泄露?
在线程池中HeapAnalyzerService extends IntentService ,其实是一个Service的onHandleIntent中处理的,在这个Service中调用了一个checkForLeak方法,
checkForLeak是整个leakcanary中最重要的一个方法:
1、把.hprof转为Snapshot(内存快照)
2、优化gcroots
3、找出泄露的对象和找出泄露对象的最短路径
最后
今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。
最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
还有 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
【Android核心高级技术PDF文档,BAT大厂面试真题解析】
【算法合集】
【延伸Android必备知识点】
【Android部分高级架构视频学习资源】
Android精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
//bbs.csdn.net/topics/618156601)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!