电脑硬件内存释放

发布时间: 2023-04-16 23:23 阅读: 文章来源:转载

在做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 2022/7/7.//#include#include#include#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类实现内存的填充和释放了。

•••展开全文
相关文章