From ddd9a27cdb48be5bf7305613746da8a2c3f92d24 Mon Sep 17 00:00:00 2001 From: artdeell Date: Sat, 16 Jan 2021 21:48:25 +0300 Subject: [PATCH] Add automatic memory adjuster --- .../main/java/net/kdt/pojavlaunch/Tools.java | 3 ++- .../net/kdt/pojavlaunch/utils/JREUtils.java | 26 +++++++++++++++++-- .../src/main/res/values/strings.xml | 3 +++ .../src/main/res/xml/pref_main.xml | 5 ++++ 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java index d600cbc8d..72097087a 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -21,6 +21,7 @@ import net.kdt.pojavlaunch.utils.*; import net.kdt.pojavlaunch.value.*; import org.lwjgl.glfw.*; import android.view.*; +import android.widget.Toast; public final class Tools { @@ -103,7 +104,7 @@ public final class Tools ctx.appendlnToLog("full args: "+javaArgList.toString()); JREUtils.launchJavaVM(ctx, javaArgList); } - + public static void getJavaArgs(Context ctx, List javaArgList) { List overrideableArgList = new ArrayList(); diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java index 62b7864aa..38cd24cd6 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java @@ -4,6 +4,7 @@ import android.app.*; import android.content.*; import android.system.*; import android.util.*; +import android.widget.Toast; import androidx.annotation.Nullable; @@ -264,7 +265,20 @@ public class JREUtils List javaArgList = new ArrayList(); javaArgList.add(Tools.DIR_HOME_JRE + "/bin/java"); Tools.getJavaArgs(ctx, javaArgList); - + if(LauncherPreferences.DEFAULT_PREF.getBoolean("autoRam",true)) { + ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo(); + ((ActivityManager)ctx.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryInfo(mi); + purgeArg(javaArgList,"-Xms"); + purgeArg(javaArgList,"-Xmx"); + javaArgList.add("-Xms"+((mi.availMem / 1048576L)-50)+"M"); + javaArgList.add("-Xmx"+((mi.availMem / 1048576L)-50)+"M"); + ctx.runOnUiThread(new Runnable() { + public void run() { + Toast.makeText(ctx, ctx.getString(R.string.autoram_info_msg,((mi.availMem / 1048576L)-50)), Toast.LENGTH_SHORT).show(); + } + }); + System.out.println(javaArgList); + } javaArgList.addAll(args); // For debugging only! @@ -275,6 +289,7 @@ public class JREUtils } ctx.appendlnToLog("Executing JVM: \"" + sbJavaArgs.toString() + "\""); */ + JREUtils.setJavaEnvironment(ctx, null); JREUtils.initJavaRuntime(); JREUtils.chdir(Tools.DIR_GAME_NEW); @@ -300,7 +315,14 @@ public class JREUtils } return exitCode; } - + private static void purgeArg(List argList, String argStart) { + for(int i = 0; i < argList.size(); i++) { + final String arg = argList.get(i); + if(arg.startsWith(argStart)) { + argList.remove(i); + } + } + } public static native int chdir(String path); public static native boolean dlopen(String libPath); public static native void redirectLogcat(); diff --git a/app_pojavlauncher/src/main/res/values/strings.xml b/app_pojavlauncher/src/main/res/values/strings.xml index 3dfe54018..14adaf6af 100644 --- a/app_pojavlauncher/src/main/res/values/strings.xml +++ b/app_pojavlauncher/src/main/res/values/strings.xml @@ -221,4 +221,7 @@ No crash detected No log. Failed to fetch the news feed ! + Enables automatic RAM adjuster + Auto RAM + Memory set to %d MB diff --git a/app_pojavlauncher/src/main/res/xml/pref_main.xml b/app_pojavlauncher/src/main/res/xml/pref_main.xml index 1e955686c..7ade628f5 100644 --- a/app_pojavlauncher/src/main/res/xml/pref_main.xml +++ b/app_pojavlauncher/src/main/res/xml/pref_main.xml @@ -32,6 +32,11 @@ android:summary="@string/mcl_setting_subtitle_hide_sidebar" android:title="@string/mcl_setting_title_hide_sidebar" app2:icon="@drawable/hide_sidebar" /> +