diff --git a/Natives/SurfaceViewController.m b/Natives/SurfaceViewController.m
index 1d9fbf7b..1b5d582b 100644
--- a/Natives/SurfaceViewController.m
+++ b/Natives/SurfaceViewController.m
@@ -21,6 +21,9 @@
#include "glfw_keycodes.h"
#include "utils.h"
+int memorystatus_control(uint32_t command, int32_t pid, uint32_t flags, void *buffer, size_t buffersize);
+#define MEMORYSTATUS_CMD_SET_JETSAM_TASK_LIMIT 6
+
// Debugging only
// #define DEBUG_VISIBLE_TEXT_FIELD
// #define DEBUG_VISIBLE_TOUCH
@@ -401,11 +404,25 @@ self.view.frame.size.width * 0.3 - 36.0 * 0.7, self.view.frame.size.height)];
*/
// [self setPreferredFramesPerSecond:1000];
+ [self updateJetsamControl];
[self updatePreferenceChanges];
[self executebtn_special_togglebtn:0];
[self launchMinecraft];
}
+- (void)updateJetsamControl {
+ if (!getEntitlementValue(@"com.apple.private.memorystatus")) {
+ return;
+ }
+ // More 1024MB is necessary for other memory regions (native, Java GC, etc.)
+ int limit = [getPreference(@"allocated_memory") intValue] + 1024;
+ if (memorystatus_control(MEMORYSTATUS_CMD_SET_JETSAM_TASK_LIMIT, getpid(), limit, NULL, 0) == -1) {
+ NSLog(@"Failed to set Jetsam task limit: error: %s", strerror(errno));
+ } else {
+ NSLog(@"Successfully set Jetsam task limit");
+ }
+}
+
- (void)updatePreferenceChanges {
self.mouseSpeed = [getPreference(@"mouse_speed") floatValue] / 100.0;
slideableHotbar = [getPreference(@"slideable_hotbar") boolValue];
diff --git a/entitlements.xml b/entitlements.xml
index 0f64cd0b..c6d527b8 100644
--- a/entitlements.xml
+++ b/entitlements.xml
@@ -19,5 +19,9 @@
dynamic-codesigning
+
+
+ com.apple.private.memorystatus
+
diff --git a/entitlements_ipa.xml b/entitlements_ipa.xml
index 66e11cbd..217ba4f1 100644
--- a/entitlements_ipa.xml
+++ b/entitlements_ipa.xml
@@ -13,6 +13,10 @@
com.apple.private.mobileinstall.upgrade-enabled
+
+ com.apple.private.memorystatus
+
+
com.apple.private.security.no-container