2019-02-24 Android OOM分析 概述 OOM(Out of Memory)即内存溢出,是因为应用所需要分配的内存超过系统对应用内存的阈值,而抛出的java.lang.OutOfMemoryError错误。 OOM的根本原因是开发者对内存使用不当造成的。 AndroidPerformance 阅读全文 >>
2019-02-22 LeakCanary原理分析 概述 LeakCanary是一个开源的内存泄漏检测库,极大简化了内存泄漏的检测流程。了解其工作原理,有助于我们更好的理解Android的内存管理机制。 AndroidTools 阅读全文 >>
2019-01-31 Android内存泄漏分析 概述 内存泄漏,即Memory Leak,指程序中不再使用到的对象因某种原因而无法被GC正常回收。发生内存泄漏,会导致一些不再使用到的对象没有及时释放,这些对象占据着宝贵的内存空间,很容易导致后续分配内存的时候,内存空间不足而出现OOM(内存溢出)。无用对象占据的空间越多,那么可用的空闲空间也就越少,GC就会更容易被触发,GC进行时会停止其他线程的工作,因此有可能造成卡顿等情况。 AndroidPerformanceTools 阅读全文 >>
2019-01-28 Android热修复原理解析 概述 热修复即”打补丁“,当一个app上线后,如果发现重大的bug,需要紧急修复。常规的做法是修复bug,然后重新打包,再上线到各个渠道。这种方式的成本高,效率低。 于是热修复技术应运而生,热修复技术一般的做法是应用启动的时候,主动去服务端查询是否有补丁包,有就下载下来,并在下一次启动的时候生效,这样就可以快速解决线上的紧急bug。 Android热修复 阅读全文 >>
2019-01-08 Hook技术 概述 Hook,英文直译是”钩子“的意思。在程序中将其理解为”劫持“可能会更好理解,我们可以通过hook技术来劫持某个对象,从而控制它与其他对象的交互。 AndroidHook 阅读全文 >>
2019-01-05 ClassLoader解析(二):Android中的ClassLoader 概述 不管是Java虚拟机,还是Android中的Dalvik/ART虚拟机,都是使用ClassLoader来将Class加载到内存。只不过Android平台上虚拟机运行的是Dex字节码,一种对class文件优化的产物,传统Class文件是一个Java源文件生成的.class文件,而Android是把所有Class文件进行合并,优化,然后生成一个最终的classs.dex,目的是把不同class文件中重复的东西只保留一份,如果不进行分dex处理,最后一个应用的apk只会有一个dex文件。 AndroidClassLoader 阅读全文 >>
2019-01-05 ClassLoader解析(一):Java中的ClassLoader 概述 ClassLoader(类加载器)的功能是将class文件加载到JVM虚拟机中,让程序可以正确运行;但是,JVM启动的时候,并不会一次性加载所有的class文件,而是根据需要去动态加载,不然,一次性加载那么多class,会占用大量内存。 AndroidClassLoaderJava 阅读全文 >>
2018-12-29 使用FindBugs插件检查Android代码 概述 FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析。不是通过分析类文件的形式或结构来确定程序的意图,而是通过使用 Visitor 模式。 AndroidJavaTools 阅读全文 >>
2018-12-15 基于Travis CI的Android项目自动构建流程 概述 编写代码只是软件开发的一小部分,更多的时间往往花在构建(build)和测试(test)。 为了提高软件开发的效率,构建和测试的自动化工具层出不穷,Travis就是这类工具,用好这个工具不仅可以提高效率,还能使开发流程更可靠和专业。 AndroidCI 阅读全文 >>