Android常见Crash原因
1.Java Crash
java代码导致jvm退出,弹出“程序已经崩溃”的对话框,最终用户点击关闭后进程退出。Logcat会在“AndroidRuntime”tag下输出Java的调用栈。
2.Native Crash
No.&Name | Reason | Resolution | Comment |
1.空指针 | 试图对空指针进行操作时(如读取空指针指向的内存),处理器就会产生一个异常 | 在使用指针前加以判断,如果为空,则是不可访问的。 | 空指针目前是糯米app最多的一种引起crash的原因,但是它也很容易被发现和修复。 |
2.野指针 | 指向的是一个无效的地址,该地址如果是不可读不可写的,那么会马上Crash;如果访问的地址为可写,而且通过野指针修改了该处的内存,那么很有可能会等一段时间(其它的代码使用了该处的内存后)才发生Crash。 |
| 。 |
数组越界 | 访问无效的地址。如果该地址不可读写,则会马上Crash;如果修改了该处的内存,造成内存破坏,那么有可能会等一段时间才在别处发生Crash。 |
| 破坏内存的bug,很难查找。 |
整数除以零 | 整数除以零默认的处理方式是终止进程 | 在做整数除法时,要判断被除数是否为0的情况。 | 改情况在开发环境下很难出现,但庞大的用户量和复杂的用户输入,就很容易导致被除数为0的情况出现。 |
格式化输出参数错误 | 与野指针类似,但是只会读取无效地址的内存,而不会造成内存破坏。其结果是要么打印出错乱的数据,要么访问了无读写权限的内存而立即宕机。 | 在书写输出格式和参数时,要做到参数个数和类型都要与输出格式一致 |
|
缓冲区溢出 | 通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏函数调用的堆栈,修改函数调用的返回地址。如果不是黑客故意攻击,那么最终函数调用很可能会跳转到无法读写的内存区域,造成程序崩溃。 |
|
|
内存管理错误 |
|
| imageview,图片占据太多内存,糯米app狂刷列表。 |
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
ADB&Appium常见问题梳理
一. 解决部分机型(如Oppo, Vivo), 每次运行Appium都要安装Appium setting, unicode 和unlock 找到路径 D:\eclipse\Appium\Appium\node_modules\appium\lib\devices\android 编辑 android.js 文件 注释以下代码: // this.pushAppium.bind(this), // this.initUnicode.bind(this), // this.pushSettingsApp.bind(this), // this.pushUnlock.bind(this), 重启Appium, 重连手机 二. 解决端口占用, eclipse报错无法执行自动化. 在Eclipse上默认端口为 5307, 查看端口命令: netstat -ano|findstr "5037" 查看占用5307端口的task: tasklist |findstr xxxx 执行语句taskkill -f -t -im adb.exe. 如不关注以上, 直接执行此命令即可. 三. 不用数据线连接手机:...
- 下一篇
关于Android Studio中Run按钮是灰色的解决
今天导入一个别人的项目,在导入之前是老方法,覆盖 了三个关键文件之后(.gradle文件夹的内容版本若与本地不一,也应删掉),重启AS; 然而嗯,运行按钮居然灰色。。 查了一下论坛,额,然后我这里是只做了一步就可以了: 就是点击一下锤子按钮(Make Project)右边的选项卡,把选项置于 app 这一项即可,运行按钮瞬间变绿: 以下文章转载自:关于Android Studio中Run按钮是灰色的解决 2016年07月21日 14:54:40 拿来人家的工程用,就是有各种版本啊设置啊的问题,要晕了。。。 首先是,在不同的AS中,gradle版本不同,下载的sdk版本不同,这些,都在gradle(Project、Models)相关代码里调过来就好。之前的文章里有说过。 经过调好gradle这些文件,AS已经可以built 成功后。 下一步,Run the application. 这时候,遇到问题:Run按钮灰色,失效。 点击Run旁边 Select Run/Debug Configuration按钮 选择 Edit Configuration,于是: 在model下拉框中选择app....
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS关闭SELinux安全模块
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- 设置Eclipse缩进为4个空格,增强代码规范
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路