内存

第一种是
adb shell dumpsys meminfo | grep com.android.contacts 取Native Heap(c++内存),DalvikHeap(java代码new出来的内存) Total:总量 三个值

 

 

分别三个绘成曲线---主要看操作业务时候曲线是不是直线上升,业务结束后会不会回落,整体操作一段时间曲线的趋势是不是向上,向上就存在内存泄漏,内存泄漏最终会导致内存溢出
问题点1:内存曲线是不是突然直线90度上升几百兆(mb)
问题点2:多次操作业务流程,整体的曲线是不是向上的。 回落的值减去启始值就是泄漏值,100mb内都是正常,100以上都是有问题
问题3:上下版本的内存峰值变化不大

第二种是
adb shell top -d 1 > meminfo 操作一段时间(一个小时)被测应用业务
文件放在目录下读取meminfo找到对应包名的那行,提取虚存和实存,做曲线查看


vss内存变化--曲线变化几百兆有问题
6000kb=6兆
vss:虚存

rss:实存
横向参考




import csv
import os
import time

#控制类
class Controller(object):
def __init__(self):
#定义收集数据的数组
self.alldata = [("id", "vss", "rss")]

#分析数据
def analyzedata(self):
content = self.readfile()
i = 0
for line in content:
if "com.android.contacts" in line:
print(line)
line = "#".join(line.split())
vss = line.split("#")[5].strip("K")
rss = line.split("#")[6].strip("K")

#将获取到的数据存到数组中
self.alldata.append((i, vss, rss))
i = i + 1

#数据的存储
def SaveDataToCSV(self):
csvfile = open('meminfo.csv', 'w')
writer = csv.writer(csvfile)
writer.writerows(self.alldata)
csvfile.close()

#读取数据文件
def readfile(self):
mfile = open("meminfo", "r")
content = mfile.readlines()
mfile.close()
return content

if __name__ == "__main__":
controller = Controller()
controller.analyzedata()
controller.SaveDataToCSV()
posted @ 2022-02-10 23:08  观呼吸  阅读(103)  评论(0)    收藏  举报