[scudo] Do a M_PURGE call before changing release interval on Android (#87110)

GitOrigin-RevId: 92d0d6f6cb4099e651d066cd88dc0abfa6e612cf
Change-Id: I25bb390880cb1389963a3c8fc143ec30550cfb75
diff --git a/standalone/wrappers_c.inc b/standalone/wrappers_c.inc
index 56d8ef2..21d5b7a 100644
--- a/standalone/wrappers_c.inc
+++ b/standalone/wrappers_c.inc
@@ -247,6 +247,11 @@
 INTERFACE WEAK int SCUDO_PREFIX(mallopt)(int param, int value) {
   if (param == M_DECAY_TIME) {
     if (SCUDO_ANDROID) {
+      // Before changing the interval, reset the memory usage status by doing a
+      // M_PURGE call so that we can minimize the impact of any unreleased pages
+      // introduced by interval transition.
+      SCUDO_ALLOCATOR.releaseToOS(scudo::ReleaseToOS::Force);
+
       if (value == 0) {
         // Will set the release values to their minimum values.
         value = INT32_MIN;