每个人都希望他们的应用非常流畅。标梵问为什么你开发的app卡的很慢?
你工作几年了,经验丰富,但是为什么你的应用卡的慢?
Android手机开发语言是java(kotlin也是java的封装),Java本身有很好的内存管理机制——GC。但是GC经常遇到不可恢复的内存,即内存泄漏和内存抖动,结果可能是OOM。
JAVA编程可以跨平台,但运行效率低于iOSObjective-C编程。运行时需要占用大量内存来换取执行速度。另外,不规则自动内存回收机制,卡死现象。随着安装的程序越来越多,在程序运行的时候,大量的系统垃圾和后台运行占用了大量的资源。如果不优化性能,你的app会卡死变慢,甚至直接死机,严重影响手机的正常使用体验。
为了避免这些问题,我们必须熟悉JVM。
为什么有人说JVM是每个Android开发者都应该掌握的技能?
如果要优化性能,虚拟机的对象分配、垃圾收集、线程调度、磁盘管理都与设备的性能有关。
从知识系统的角度来看,了解虚拟机可以加深你对语言的理解,这对系统调优很有帮助,会让你写出高效低成本的代码。
从实用角度来说,在Android开发中,各种热修复方案,热更新等。通常与您对虚拟机机制的研究密不可分,因为很多时候您需要挂钩一些虚拟机的实现。如果不知道怎么做,比如阿里的sophix。
JVM将运行时数据分为两类:线程私有数据区和共享数据区。线程私有数据区包括程序计数器、虚拟机堆栈和本地方法区。所有线程共享的数据区包括Java堆和方法区,方法区有一个常量池。内存泄漏意味着系统无法回收已分配但未使用的内存。形象比喻就像家里的水龙头没有拧紧漏水。
内存泄漏分为:
频繁内存泄漏,偶尔内存泄漏,一次性内存泄漏,隐式内存泄漏。
隐式内存泄漏非常有害,因为它们比频繁和偶尔的内存泄漏更难检测。内存泄漏的积累会消耗掉系统所有的内存!
优化APP的性能是Android开发者应该具备的综合素质,也是开发者能够完成高质量应用作品的保证。
本文来源:标梵互动