Android移植memtester

本文介绍如何在Android设备上移植并使用memtester,一种内存压力测试工具。通过详细步骤指导,包括下载源码、配置编译环境及执行测试,帮助开发者模拟和诊断内存消耗问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                     Android移植memtester

          由于客户反馈在终端使用过一段时间后出现一些意想不到的问题,为了模拟消耗过多然后出现的问题,今天记录一下在android上面使用一个内存压力测试工具memtester在android上面的使用:

1.获取相关源码,下载地址如下:http://pyropus.ca/software/memtester/,或者通过wget的方式进行下载,具体如下wget http://pyropus.ca/software/memtester/old-versions/memtester-4.2.2.tar.gz,其中4.2.2是版本信息,可以是其他版本

 

2.解压源码到android源代码的external目录下面

 

 

3.使用下述的Android.mk文件进行编译

# used to gen: memtester
# by tangkw
# 2014-1-7
LOCAL_PATH := $(call my-dir)
 
include $(CLEAR_VARS)
LOCAL_MODULE := memtester	
LOCAL_MODULE_TAGS := optional
# memtester source files
LOCAL_SRC_FILES := memtester.c tests.c
LOCAL_C_INCLUDES :=	$(LOCAL_PATH)/
include $(BUILD_EXECUTABLE)

 

4.配置好android编译环境后,在该源码目录下面使用mm -B  -j32进行编译(有些平台可能不支持-B,可以除去此命令),此时就会生成memtester,然后将其push到android系统中然后执行就OK了。

 

5.Usage: memtester [-p physaddrbase] [B|K|M|G] [loops]  
如:  
memtester 100M 10 #测试100M内存消耗10次。  

root@A920:/system/bin # ./memtester  100M 10
memtester version 4.2.2 (32-bit)
Copyright (C) 2010 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).

pagesize is 4096
pagesizemask is 0xfffff000
want 100MB (104857600 bytes)
got  100MB (104857600 bytes), trying mlock ...locked.
Loop 1/10:
  Stuck Address       : ok
  Random Value        : ok
  Compare XOR         : ok
  Compare SUB         : ok
  Compare MUL         : ok
  Compare DIV         : ok
  Compare OR          : ok
  Compare AND         : ok
  Sequential Increment: ok
  Solid Bits          : ok
  Block Sequential    : setting 160

 

最后附上编译OK的执行文件Android下memtester执行文件,方便读者使用。

### 如何在Android上使用Memtester或其他替代方案进行内存测试 #### 使用Memtester的方法 为了在Android设备上运行Memtester,可以按照以下方式操作: 1. **准备源码并配置环境** 将`memtester`的源文件放置于Android SDK目录中的`external`子目录下,并将其重命名为`memtester`。随后,在该路径创建一个名为`Android.mk`的构建脚本[^1]。 2. **编写Android.mk文件** 下面是一个典型的`Android.mk`文件的内容示例: ```makefile LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := memtester.c tests.c LOCAL_MODULE := memtester LOCAL_C_INCLUDES := $(LOCAL_PATH) LOCAL_MODULE_TAGS := optional include $(BUILD_EXECUTABLE) ``` 此外,还可以参考Linux下的Makefile结构来进一步调整编译选项[^3]。 3. **执行编译过程** 利用Android NDK完成对上述模块的编译工作。成功之后会生成可执行程序`memtester`,它能够被部署至目标设备用于实际的压力测试活动[^5]。 4. **启动测试命令** 在应用程序内部调用Shell接口实现自动化控制流程。例如借助Java API中的Runtime类加载外部二进制文件实例化对象后传入相应参数发起请求[^4]: ```java Process p = Runtime.getRuntime().exec("/path/to/memtester"); BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream())); String s; while ((s = stdInput.readLine()) != null) { System.out.println(s); } ``` #### Memtester的功能特性概述 此工具主要针对物理RAM单元实施全面诊断分析作业,涵盖但不限于以下几个方面[^2]: - 随机数值填充验证; - 数据一致性校验算法(XOR对比); - 数学逻辑运算模拟场景重现(加减乘除以及按位AND/OR/XOR处理等) 这些检测手段有助于发现潜在硬件缺陷比如固定位置始终处于高电平状态或者低电平状态不变动的现象即所谓“坏比特”。 #### 替代解决方案推荐列表 如果考虑其他备选技术路线,则可以从下面几个方向入手探索可能性: - **MonkeyRunner**: 提供了一套基于Python脚本驱动UI交互事件流录制回放机制的同时也支持资源消耗指标监控功能。 - **Systrace/Perfetto**: 聚焦性能剖析层面的数据采集展示平台,适用于深入理解应用生命周期内的各种行为特征表现情况。 - **LeakCanary**: 专注于泄露问题排查定位的专业级库组件,特别适合解决长期驻留型服务进程可能引发的隐匿性风险隐患。 --- 问题
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值