美文网首页Android开发经验谈
震惊!app为何会突然崩溃???

震惊!app为何会突然崩溃???

作者: e240c12aa0ad | 来源:发表于2020-05-11 14:19 被阅读0次

张三看电影的app突然莫名崩溃?二狗新买的手机为何无故变卡?

黑屏、死机,怪事频发,这一切的背后到底是设备的沦丧,还是程序员技术的扭曲? Android技术优化日新月异,如今Android 10.0 已经发布,系统性能非常流畅,体验上完全可以媲美iOS;到了各大厂商手里,改源码、自定义系统,使得Android原生系统变得鱼龙混杂;再到不同层次的开发工程师手里,做出来的应用参差不齐,所以很多手机跑分软件上遥遥领先,打开应用依然会卡顿。安卓手机卡顿、app崩溃、黑屏死机、OOM,主要是内存问题,罪不在Android系统,罪在开发APP的各位。[图片上传失败...(image-1310f1-1589177901727)] Android本身有自动管理内存的机制,但是对内存的不恰当使用很容易引起严重的性能问题。Android系统里面有一个Generational Heap Memory的模型,系统会根据内存中不同的内存数据类型分别执行不同的GC操作。

image 根据不同内存数据类型执行不同GC操作
执行GC操作的时候,任何线程的任何操作都会需要暂停,等待GC操作完成之后,其他操作才能够继续运行。(所以垃圾回收运行的次数越少,对性能的影响就越少)导致GC频繁执行有两个原因:1.Memory Churn内存抖动:内存抖动是因为大量的对象被创建又在短时间内马上被释放。2.瞬间产生大量的对象会严重占用Young Generation的内存区域,当达到阀值,剩余空间不够的时候,也会触发GC。即使每次分配的对象占用了很少的内存,但是他们叠加在一起会增加Heap的压力,从而触发更多其他类型的GC。这个操作影响到帧率时,用户就会感知到性能问题。如果你在Memory Monitor里面查看到短时间发生了多次内存的涨跌,这意味着很有可能发生了内存抖动;
image

同时我们还可以通过Allocation Tracker来查看在短时间内,同一个栈中不断进出的相同对象。这是内存抖动的典型信号之一。


内存泄露 memory leak

就是系统回收不了那些分配出去但是又不使用的内存, 形象点比喻就像家里的水龙头没有拧紧,漏水了。内存泄漏分为:常发性内存泄漏,偶发性内存泄漏,一次性内存泄漏,隐式内存泄漏。隐式内存泄漏危害性非常大,因为较之于常发性和偶发性内存泄漏更难被检测到。****内存泄漏对程序造成的影响1.直接:消耗内存,造成系统应用Out Of Memory.一个android应用程序,其实就是一个jvm虚拟机实例,而一个jvm的实例,在初始的时候,大小不等 16M,32M,64M(根据手机厂商和版本不同而不同),当然大小也可以修改;2.间接:gc回收频繁 造成应用卡顿ANR.内存泄漏本身不会产生什么危害,一般用户,根本感觉不到。真正有危害的是内存泄漏的堆积,将会消耗系统所有的内存!随着程序的运行,可以使用的内存就会越来越少,机子就会越来越卡,直到内存数据溢出,然后程序就会挂掉,再跟着操作系统也可能无响应,接着你就按重启了…手机变卡,就在所难免了。要深入理解并提升Android性能优化技术,就需要我们深入理解JVM原理在移动端的实战应用。JVM原理是如何指导我们代码实践开发的?我们该如何从架构层面优化app性能?太多的开发者对性能优化没有实际开发经验,这个是病得治,灵丹妙药就是项目实战!

转自:https://mp.weixin.qq.com/s/mN92kQuf8ruxmVrVV_IGyw

相关文章

  • 震惊!app为何会突然崩溃???

    张三看电影的app突然莫名崩溃?二狗新买的手机为何无故变卡? 黑屏、死机,怪事频发,这一切的背后到底是设备的沦丧,...

  • 产品经理简历不吹牛逼会死么

    拿到这位求职者的简历时,我的内心是崩溃和震惊的。其项目经历之丰富,web端/APP端都有,产品和运营经历也有,关键...

  • iOS 崩溃日志(Tjw开发版)

    崩溃日志的产生 iOS中运行App过程中如果发生程序崩溃,会生成一个崩溃日志文件。这个文件会保存的特定系统目录下,...

  • 20180416|海上龙之梦

    开启这个云上之梦,起因是自己精神的错乱,在崩溃的边缘。看这个世界有几多虚化,看人来人去在街上,不知为何会如此为何会...

  • iOS开发异常处理,防止界面崩溃(使用@try、catch捕获异

    在开发APP时,我们通常都会需要捕获异常,防止应用程序突然的崩溃,添加异常处理

  • 爸,能不能别再给我发那些奇怪的链接了?

    你一定收到过父母发来的这种链接: 我总是感到疑惑,经历了更多岁月洗礼的上一辈人,为何会如此轻易地"震惊"?为何会如...

  • iOS Crash分析

      上线App Store有时候会因为应用崩溃导致杯具,这时,苹果审核人员会给你发送崩溃报告。但是,这个报告没有具...

  • [iOS]App崩溃解析(二):如何获取.crash文件

    前言 每当App发生崩溃的时候, 都会生成一份崩溃日志并存储在设备上。这个崩溃日志会记录下当前进程中的所有执行线程...

  • 突然的崩溃

    成年人突然的崩溃会在什么时候,我的回答是:任何时候。因为成年人不是突然的崩溃,我们的突然,其实大多数是延迟的崩溃。...

  • 突然有点崩溃

    工作上遇到一个无语的领导,之前远观不觉得有什么特别之处,现在走进了,才发现有的事情的发生不是偶然。 能在工作上遇到...

网友评论

    本文标题:震惊!app为何会突然崩溃???

    本文链接:https://www.haomeiwen.com/subject/lrsunhtx.html