如何检测内存问题
使用MAT分析,它是一款免费的行能分析工具,打开之后,我们需要在Android studio中导出一段时间的hrof文件,点击之后as下载,ui会开始下载,分析该设备的CPU的内存情况,点击内存,进入内存分析页面,点击上面的下载按钮开始记录,将文件拖到mat应用中,选择内存泄漏分析,mat主要分析Java的,而Android的虚拟机导出来的内存文件格式与标准的Java hprof文件不同。可以通过SDK自带的命令行转换格式hprof—conv源文件 目标文件 选择。就可以分析内存的使用情况了
内存溢出和内存泄漏的区别及常见的问题
内存泄漏:就是你向系统申请了内存的使用(new),使用完了之后却不归还(delete)。结果你申请的那块内存自己不能访问,而系统也不会分配给需要的程序。
内存溢出:就是你要的内存空间超出了系统分给你的空间。就相当于系统没法满足你的要求,就会报内存溢出。
内存泄漏的堆积会导致内存溢出
内存溢出的原因:
1.内存中加载的数据过于庞大
2.集合中对象的引用,使用完未清空,jvm不能回收
3.代码中存在死循环或者循环产生大量对象
4.启动参数时设置过小
如何解决内存问题
1.修改JVM的启动参数,直接增加内存
2.检查错误日志,查看“OutOfMemory”错误,当前是否有其他异常或错误
3.对代码进行检查和分析,找出可能发生内存的问题
4.检查代码中是否有死循环或者是递归调用
5.检查对数据库查询,是否一次获得全部数据的查询
6.检查是否有大量循环重复产生新对象实体
7.检查List,Map等集合是否有使用完后,未清理的问题
网友评论