1.生成可执行文件收集动态内存数据

\hardware\qcom\memory\memory_detect.c

#include <stdio.h>
#include <linux/kernel.h>
#include <linux/unistd.h>
#include <unistd.h>
#include <sys/sysinfo.h>
#include <string.h>
#include <stdlib.h>  int main(int argc,char *argv[])
{FILE * mfd;FILE * rfd;   char buff[1024];long total;long avalable;long free;float memory_ratio;char name[20];char sf[7];int interval = 0;if(argc > 1){//char* 到 intinterval = (int)atoi(argv[1]);printf("arg_num : %d,interval : %d\n",argc,interval);}else{//default 60sinterval = 60;}system("rm -rf /data/memory.txt"); rfd = fopen("/data/memory.txt","ab+");sprintf(sf,"%d",interval);fwrite(sf,1,1,rfd);fclose(rfd);while(1){avalable = 0;free = 0;mfd = fopen("/proc/meminfo","r");rfd = fopen("/data/memory.txt","ab+");fgets(buff, sizeof(buff), mfd); sscanf(buff, "%s %ld", name,&total);  fgets(buff, sizeof(buff), mfd); sscanf(buff, "%s %ld", name,&free); fgets(buff, sizeof(buff), mfd); sscanf(buff, "%s %ld", name,&avalable); printf("total : %ld,avalable : %ld\n",total,avalable);memory_ratio = (float)avalable/(float)total;sprintf(sf,"\n%.3f",memory_ratio); // float 到 charprintf("memory ratio:%s\n",sf);fwrite(sf,1,sizeof(sf)-1,rfd);fclose(mfd);fclose(rfd);sleep(interval);}}

Android.mk

LOCAL_PATH := $(call my-dir)# common include paths#
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(commonIncludes)LOCAL_MODULE := memory_detect
LOCAL_MODULE_OWNER := qtiLOCAL_SRC_FILES := memory_detect.cLOCAL_CFLAGS := -D_GNU_SOURCELOCAL_PRELINK_MODULE := false
LOCAL_MODULE_TAGS := optional
LOCAL_PROPRIETARY_MODULE := true
include $(BUILD_EXECUTABLE)

之后推送到目标机,执行memory_detect 10 &后台执行即可(每隔10s收集一次剩余内存的比率)。待收集到足够的数据后,取出内存数据/data/memory.txt

2.使用matplotlib绘制内存变化的趋势图,python的脚本memory.py如下:

import matplotlib
matplotlib.use('TkAgg')
from matplotlib import pyplot as plt
y_values = []file = open("memory.txt")
line = file.readline()
interval = int(line)
print intervalline = file.readline()
while line:line = float(line)print liney_values.append(line)line = file.readline()x_values = []
for i in range(len(y_values)):x_values.append(i*interval)plt.scatter(x_values, y_values, s=40)
plt.title("memory usage tendency", fontsize=24)
plt.xlabel("times", fontsize=14)
plt.ylabel("memory usage ratio", fontsize=14)
plt.axis([0, len(x_values*interval), 0, 1.0])
plt.tick_params(axis='both', labelsize=14)
plt.show()

说明:memory_detect进程采集的第一个数据是每次数据收集的间隔时间(单位秒)
3.查看内存变化趋势图

从上图中,能够很清晰的看出每隔2s采集的内存数据,剩余内存基本都维持在0.6左右

绘制Linux/Android设备的内存动态变化趋势图相关推荐

  1. Android 设备清理内存 RAM

    实现思路 调用系统的killBackgroundProcesses 具体实现如下: 1.配置权限 <uses-permission android:name="android.perm ...

  2. android+动态地图+效果图,Android百度地图绘制圆形,圆形半径可动态变化

    问题:百度地图绘制圆形,圆形半径可随进度拖动条发生改变 思路:圆形本身是一个覆盖物,可参考百度地图Demo中的OverlayDemo.java这个类进行实现.完成画圆之后,圆形半径如何随着进度条的拖动 ...

  3. python绘制动态变化的图_用Jupyter Noteb中的matplotlib绘制动态变化图形

    我一直在寻找一个很好的解决方案,其中一个线程正在泵送数据,我们希望Jupyter笔记本不断更新图形,而不阻止任何事情.在查阅了十几个相关答案后,以下是一些发现: 小心 如果你想要一个实时的图表,不要使 ...

  4. Linux嵌入式设备内存问题定位

    Linux嵌入式设备的内存一般都不大,可能就只有32M.64M.128M.256M.无线路由器一般以64M和128M居多.之前用的64M内存的方案,由于做海外版本,增加功能,导致了内存不足,因此总结了 ...

  5. 基于蓝牙与Android设备的控制系统设计

    Android操作系统是Google基于开源的Linux操作系统开发的移动操作平台,由操作系统.中间件.用户界面和应用软件组成,是专门为移动终端打造的开放和完整的移动操作系统.Android软件平台包 ...

  6. Nature子刊 | 翟冰等造血干细胞移植中的肠道真菌菌群动态变化与临床结果分析(招聘博后、助研)...

    近日,中国科学院先进技术研究院合成生物学研究所.深圳合成生物学创新研究院翟冰研究员在Nature Microbiology 杂志发表了题为"肠道真菌动态变化和近平滑念珠菌定植与造血干细胞移植 ...

  7. origin如何绘制多条折线_如何用origin绘制数据变化折线图

    在实验中我们可能会得到一些数据,这些初始数据我们首先可以用数据统计分析软件SPSS来进行初步处理分析,得到摘要性的统计数据,如平均值和标准误的值(如果有兴趣可以看这篇文章:<用SPSS做独立样本 ...

  8. java如何绘制温度实时曲线_Android实现天气预报温度/气温折线趋势图

     Android实现天气预报温度/气温折线趋势图 天气预报的APP应用中,难免会遇到绘制天气温度/气温,等关于数据趋势的折线或者曲线图,这类关于气温/温度的折线图,一般会有两条线,一条是高温线,一 ...

  9. linux内存加速硬盘缓存,linux块设备加速缓存之bcache

    linux块设备加速缓存之bcache 什么是bcache 转载请注明出处:http://blog.csdn.net/liumangxiong bcache是linux内核块层cache.它使用类似S ...

  10. linux内存给hdd当缓存,linux块设备加速缓存之bcache [转]

    转载请注明出处:http://blog.csdn.net/liumangxiong bcache是linux内核块层cache.它使用类似SSD来作为HDD硬盘的cache,从而起到加速作用. HDD ...

最新文章

  1. 【Accelerated C++】重点回顾
  2. URAL 1047 Simple Calculations
  3. transient-java 关键字
  4. nginx的root alias 指令
  5. [POI2008]STA-Station
  6. BZOJ.4553.[HEOI2016TJOI2016]序列(DP 树状数组套线段树/二维线段树(MLE) 动态开点)
  7. Vue 调试工具 vue-devtools 安装及使用
  8. JdbcTemplate 排序查询结果不一致问题
  9. 深入分析SQL字符串限制长度漏洞
  10. 项目质量监测(三)e2e test端到端测试——单元测试和端到端测试 e2e test工具-Cypress Nightwatch TeatCafe Codecov-测试结果可视化
  11. JAVA/JSP B2C系统介绍
  12. 华三s5000配置镜像接口_华为S5300交换机配置基于接口的本地端口镜像
  13. 做正确的事情,等着被开除
  14. autocad ios 虚线_autocad中画箭头、虚线绘制方法介绍
  15. linux卸载usb声卡,Linux alsa 声卡驱动 安装 卸载 设置默认声卡
  16. 在win10中,映射共享文件时,输入网络凭据总是报错
  17. GNU 开发工具(GNU Development Tools)
  18. linux修改文件图标,Gnome怎么修改应用图标icon
  19. 追剧人的福利来了,这几款APP让你痛快追剧
  20. itextsharp操作pdf删除某页

热门文章

  1. 几款KINECT应用
  2. 在cygwin下使用VC编译器
  3. 创建visual basic2005 数据库
  4. HBase 写优化之 BulkLoad 实现数据快速入库
  5. .NET(WinCE、WM)开发转Android开发 ——Xamarin和Smobiler对比...
  6. (转载)使用Maven构建多模块项目
  7. redis_学习_02_redis 可视化工具 Redis Desktop Manager
  8. SSM-Spring-04:Spring的DI的构造注入,P命名注入,和集合注入
  9. 这个“达芬奇”不一般!它是美国医生的好帮手
  10. 比特币创业公司Circle首获数字货币许可证