某天中午他趁着大家都出去吃饭,让我帮他看看。我一看,这个项目基本没什么进展啊,反而漏洞百出。装上这个应用之后,十分卡顿,随便点点,就有三个地方报错了,经常使用一段时间就莫名其妙的闪退,而且时不时跳出应用异常,建议卸载的提示。一登录就三处报错,什么鬼???一进行检查,发现里面有大量的内存泄漏和内存抖动问题。
我问他你不是工作3年了吗?怎么能做成这个样子?
他支支吾吾半天,才说自己是自学了3年。我问他Java掌握的怎么样?他说,做andriod还要掌握Java吗?
我震惊了!这TM怎么通过面试的???
刚好老板路过,我正准备抱怨一番。没想到他先开口了:“二舅,一起去吃饭吗?”
老板笑着和他一起走了,只剩下我在风中凌乱…
本故事纯属虚构,如有雷同,可能是巧合吧。
人还是需要有危机意识:
人在年轻的时候不能过的太舒服,刚毕业前几年还是要多吃点苦,努力提高自己的专业知识,提前做好积累,等后面干不动了,也有老本可以吃啊。
“平时工作用不到这些东西,自己也就没去看”。有这种观点的人,我相信不在少数。我就不明白了,一些技能,一家公司用不到不代表其它公司也用不到,人总得换工作吧,不多学一点怎么能通过面试呢。
话说回来,有些技能工作中还真用的少,但就是面试有用,这个不服气不行。
所以摆在面前得一个事实:**现在随着年龄的增长,程序员的学习能力减弱,对新技术的掌握也会越发困难。**对比年轻的程序员,年长的程序员的技术核心竞争力将不复存在,原因无非是在自己应该静下来思考,静下来体系化学习的时候,没有把握住机遇,能力提升不起来。所以时时刻刻都要面临着被公司淘汰的风险。
每个人都要思考这个问题,在当今的互联网环境下,如何有危机感,如何规划自己的未来,只有未雨绸缪,未来才能应对自如。
Android 开发的现状
经过近十年的发展,Android技术优化日新月异,如今Android 10.0 已经发布,Android系统性能也已经非常流畅,可以在体验上完全媲美iOS。到了各大厂商手里,改源码、自定义系统,使得Android原生系统变得鱼龙混杂,然后到了不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。
APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。
安卓手机的开发语言是Java(kotlin也是对java的封装),Java本身有一个很好的管理内存的机制—— GC。然而,GC却经常会遇到无法回收的内存,即内存泄漏,内存抖动,结果可能是OOM。
为了避免出现这些问题,我们首先必须对JVM的内存管理机制有自己清晰的认识。
JVM将运行时数据区分为线程私有和共享数据区两大类。
其中线程私有的数据区包含程序计数器、虚拟机栈、本地方法区,所有线程共享的数据区包含 Java 堆、方法区,在方法区内有一个常量池。
内存泄露就是系统回收不了那些分配出去但是又不使用的内存, 形象点比喻就像家里的水龙头没有拧紧,漏水了。
随着程序的运行,可以使用的内存就会越来越少,机子就会越来越卡,直到内存数据溢出,然后程序就会挂掉,再跟着操作系统也可能无响应,接着你就按重启了…
内存泄漏分为:
常发性内存泄漏,偶发性内存泄漏,一次性内存泄漏,隐式内存泄漏。
隐式内存泄漏危害性非常大,因为较之于常发性和偶发性内存泄漏更难被检测到。内存泄漏的堆积,将会消耗系统所有的内存!手机变卡,就在所难免了。
另外,JAVA编程可以跨平台,但运行效率相对于iOS的Objective-C编程要低,运行时需要占用大量内存来换取执行速度,再加上不定期的内存自动回收机制,出现的现象就是卡顿。随着安装程序越多,大量的系统垃圾和后台运行占据了很多资源,出现卡顿现象,有些甚至还直接黑屏死机,严重影响了手机正常使用体验。使用时间越长,安卓手机出现卡顿就越多。
如今安卓手机的性能已经比之前提高了许多,一个优秀的Android开发者,需要熟练掌握JVM原理与性能优化技术,将自己开发的app性能做到极致。
JVM的核心原理你懂多少?如何通过JVM原理指导我们代码实践开发?我们该如何从架构层面优化产品性能?谷歌工程师是如何实现性能与功能上的改进技术?项目整体框架设计中该使用哪些优化技术?
最后
代码真的是重质不重量,质量高的代码,是当前代码界提倡的,当然写出高质量的代码肯定需要一个相当高的专业素养,这需要在日常的代码书写中逐渐去吸收掌握,谁不是每天都在学习呀,目的还不是为了一个,为实现某个功能写出高质量的代码。
所以,长征路还长,大家还是好好地做个务实的程序员吧。
最后,小编这里有一系列Android提升学习资料,有兴趣的小伙伴们可以来看下哦~