eatmenmory android下运行的linux程序,模拟低内存环境

本文介绍了如何使用eatmenmory工具在Android设备上模拟低内存环境进行压力测试。通过编写eatmenmory.cpp并生成可执行文件,能够在不被系统清理的情况下消耗内存。该方法允许指定内存大小,并且可以将程序添加到init.rc以实现开机启动。然而,网络上的一些Android Low Memory测试工具可能存在被系统清理的问题,导致显示的内存状态与实际不符。

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

为了达到测试内存紧张的目的,模拟低内存环境

需要在程序申请大块内存,把系统内存消耗掉

但是又不希望被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








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值