为了达到测试内存紧张的目的,模拟低内存环境
需要在程序申请大块内存,把系统内存消耗掉
但是又不希望被android各种策略清理掉
eatmenmory.cpp
#include <stdio.h>
#include <cstring>
char* pstr[512];
int main(int argc, char** argv)
{
int a=10;
scanf("%ld",&a);
printf("start eatmenmory %d\n",a);
int i = 512;
for(i = 0; i < a; i++)
{
pstr[i] = new char[1*1024*1024];//(char*)malloc(sizeof(char)*1024*1024);
memset(pstr[i], 1, 1*1024*1024);
printf("allocation eatmenmory %d\n",i);
}
printf("end eatmenmory");
for(;;);
return 0;
}
Android.mk 不可以在windows下生产和编写,如果遇到编译不过的问题,请拷贝一个Android.mk来修改就好了
ninja: error: '/eatmemory.cpp', needed by 'out/target/product/C5_01/obj/EXECUTABLES/eatmemory_intermediates/eatmemory.o', missing and no known rule to make it
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:=eatmemory.cpp
LOCAL_SHARED_LIBRARIES:= libutils
LOCAL_LDLIBS := -lm -llog #解决undefined reference to `__android_log_print'
LOCAL_MODULE_TAGS:=optional
LOCAL_MODULE:=eatmemory
include $(BUILD_EXECUTABLE)
生产出来eatmenmory bin文件可以在android运行了,想要多大内存就输入多大数值单位是M
如果是需要在开机启动就需要加入到init.rc启动就ok了
网络上提供的一个Android Low Memory 测试工具 Eat Memory 直接安装的APK,
存在被清理的情况,显示的内存剩余和free显示的不一致
下载地址:http://blog.csdn.net/flypu/article/details/48145107
本文介绍了如何使用eatmenmory工具在Android设备上模拟低内存环境进行压力测试。通过编写eatmenmory.cpp并生成可执行文件,能够在不被系统清理的情况下消耗内存。该方法允许指定内存大小,并且可以将程序添加到init.rc以实现开机启动。然而,网络上的一些Android Low Memory测试工具可能存在被系统清理的问题,导致显示的内存状态与实际不符。
2309

被折叠的 条评论
为什么被折叠?



