内存填充工具 (内存填充工具下载)

在做APP保活时,需要验证LMK场景下的APP被系统kill后,自动拉起场景;使用java语言对内存填充很麻烦,但是如果使用C就很简单,使所以这时候就需要使用JNI了。JNI使用请参考博文十分钟学会 Native JNI 。
下面简单介绍一下使用C填充内存的方法,用于LMK测试,很简单,也比较实用,同时可以做为学习JNI的练习。

1. 首先需要编java文件

public class MemFillTool {public static MemFillTool instance;static {System.loadLibrary("mem_fill_tool");instance = null;}public static MemFillTool getInstance() {if (instance == null)instance = new MemFillTool();return instance;}public native int fillMem(int paramInt);//内存填充public native int freeMem();//内存释放}

这里需要注意的是System.loadLibrary(“mem_fill_tool”);指的是后边so库文件的名称。

2、在C中添加内存填充和释放的方法

//// Created by dWX563304 on 2电脑 022/7/7.//#include<jni.h>#include<stdlib.h>#include<string.h>#include "com_example_myapplication_MemFillTool.h"static 电脑int *p;JNIEXPORT jint JNICALL Java_com_example_myapplication_MemFillTool_fillMem (JNIEnv *env, jobject obj, jint 电脑 paramInt){p=(int*)malloc(256*1024*paramInt*sizeof(int));memset(p,2,1024*1024*paramInt);return 0;}JNIEXPORT jint JNICALL Java_com_example_myapplication_MemFillTool_freeMem (JNIEnv *, jobject){free(p);p=NULL;return 0;}3、生存动态库

到terminal中切换到jni目录,执行ndk-build,(这里需要配置Ndk环境变量,就是把项目中配置的NDK路径配置到PATH中去。)

ndk-buil命令结束之后,会在libs目录中出生成对应平台的so文件,这里我只配置了armeabi-v7a这一种格式。

电脑电脑

现在编译so的过程就完成了,接下来就是使用so了。
注意这里生成的so文件需要和第一步的加载动态库名称一致。
这样就可以在Java中使用MemFillTool类实现内存的填充和释放了。


电脑