博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android内存小谈
阅读量:6992 次
发布时间:2019-06-27

本文共 637 字,大约阅读时间需要 2 分钟。

先来想一个问题:如果一个应用内存占用超过了16M,而手机系统分配的最大内存只有15M,那么会有什么问题?

没错,内存溢出,外在表现是手机卡死或者程序崩掉。当然,Android有一套自己的垃圾回收机制,当一些被引用的对象不再使用的时候就当做“垃圾”来处理,用GC(垃圾处理器)释放掉被占用的那部分内存。

有时候我们会去主动分析一个应用的内存消耗情况,说到这就得赞一下Xcode,它可以直观的反应当前程序占用的cpu、内存的情况。而Eclipse则不那么直观,不过也有相应的内存监测工具,就是它自带的Heap工具,在DDMS模式下就可以看到。但是Heap只提供一个大概的统计数据,而不能够详细的说明到底是哪个地方占用或者消耗了较多的内存,我们只有对这个结果有一个全面的分析,才能对特定的代码进行优化操作。推荐一个Android下的内存泄露分析工具—Mat,只需要该插件,然后放到Eclipse的plugins目录下即可。

那么GC怎么判断一个对象是否需要被释放呢?Java用了有向图的原理,简单滴说,就是如果从一个对象能到达根节点,那么它就是有效对象,GC不会回收,反之则认为是需要被释放的对象。因为我这个本上没装Mat插件,就不分析了,感兴趣的大家可以亲自试一下。但个人觉得不要手动去杀内存,毕竟Android有自己内在的垃圾回收机制,打破既定规则总免不了出现别的问题。

 

转载于:https://www.cnblogs.com/Birdmafly/p/3687790.html

你可能感兴趣的文章
python学习之老男孩python全栈第九期_数据库day003 -- 作业
查看>>
深度优先遍历
查看>>
常用类型转换 一.常用int和string类型转换
查看>>
Ext Js简单Grid分页及选择器的使用
查看>>
slice 定义和用法
查看>>
分类游戏 结构体
查看>>
导出、恢复、上传镜像
查看>>
java第一个程序提示找不到符号-System.out.printIn
查看>>
LineageOS源码定制手机系统
查看>>
flask怎样获取authorization
查看>>
Python3 Selenium自动化web测试 ==> 第六节 WebDriver高级应用 -- 操作web页面的滚动条...
查看>>
HTMl5的sessionStorage和localStorage的一些区别
查看>>
Find Minimum in Rotated Sorted Array
查看>>
Android Studio模拟器的问题及解决办法
查看>>
实现Android ListView 自动加载更多内容
查看>>
高淇Struts2.0教程之视频笔记(6)
查看>>
python二进制读写文件
查看>>
sql server 高可用性技术总结
查看>>
近阶段学习总结(EasyUI的使用)
查看>>
第二次作业
查看>>