diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index 27718e5..ac33759 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -257,7 +257,7 @@
     <string name="ad_pocket_mode_always">Always</string>
     <string name="bars_and_menus_category_recent_panel_title" >Recents view</string>
 
-    <!--  Recents clear all -->
+    <!-- Recents clear all -->
     <string name="show_recent_clear_all_button_title">Clear all button</string>
     <string name="show_recent_clear_all_button_summary">Show clear all button within the recent applications view</string>
     <string name="recent_clear_all_button_location_title">Clear all button position</string>
@@ -267,6 +267,12 @@
     <string name="recent_clear_all_button_location_bottom_left">Bottom left</string>
     <string name="recent_clear_all_button_location_bottom_right">Bottom right</string>
 
+    <!-- Memory Indicator -->
+    <string name="show_recents_memory_indicator_title">Memory indicator</string>
+    <string name="show_recents_memory_indicator_summary">Show a memory indicator within the recent applications view</string>
+    <string name="recents_memory_indicator_location_title">Memory indicator position</string>
+    <string name="recents_memory_indicator_location_summary">Choose position of the memory indicator</string>
+
     <!-- Contextual Notification Panel Header -->
     <string name="notification_drawer_category_title">Notification drawer</string>
     <string name="custom_statusbar_header_title">Contextual notification panel header</string>
diff --git a/res/xml/more_interface_settings.xml b/res/xml/more_interface_settings.xml
index d071b80..f035aca 100644
--- a/res/xml/more_interface_settings.xml
+++ b/res/xml/more_interface_settings.xml
@@ -39,4 +39,20 @@
             android:entryValues="@array/recent_clear_all_button_location_values"
             android:defaultValue="2"
             android:dependency="recent_menu_clear_all" />
+
+    <CheckBoxPreference
+            android:key="show_recents_memory_indicator"
+            android:title="@string/show_recents_memory_indicator_title"
+            android:summary="@string/show_recents_memory_indicator_summary"
+            android:defaultValue="false" />
+
+    <ListPreference
+            android:key="recents_memory_indicator_location"
+            android:title="@string/recents_memory_indicator_location_title"
+            android:summary="@string/recents_memory_indicator_location_summary"
+            android:entries="@array/recent_clear_all_button_location_entries"
+            android:entryValues="@array/recent_clear_all_button_location_values"
+            android:defaultValue="1"
+            android:dependency="show_recents_memory_indicator" />
+
 </PreferenceScreen>
diff --git a/src/org/omnirom/omnigears/interfacesettings/MoreInterfaceSettings.java b/src/org/omnirom/omnigears/interfacesettings/MoreInterfaceSettings.java
index 5ac0d98..6ce63ac 100644
--- a/src/org/omnirom/omnigears/interfacesettings/MoreInterfaceSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/MoreInterfaceSettings.java
@@ -39,9 +39,14 @@
 
     private static final String RECENT_MENU_CLEAR_ALL = "recent_menu_clear_all";
     private static final String RECENT_MENU_CLEAR_ALL_LOCATION = "recent_menu_clear_all_location";
+    private static final String SHOW_RECENTS_MEMORY_INDICATOR = "show_recents_memory_indicator";
+    private static final String RECENTS_MEMORY_INDICATOR_LOCATION =
+            "recents_memory_indicator_location";
 
     private CheckBoxPreference mRecentClearAll;
     private ListPreference mRecentClearAllPosition;
+    private CheckBoxPreference mShowRecentsMemoryIndicator;
+    private ListPreference mRecentsMemoryIndicatorPosition;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -53,14 +58,28 @@
 
         mRecentClearAll = (CheckBoxPreference) prefSet.findPreference(RECENT_MENU_CLEAR_ALL);
         mRecentClearAll.setChecked(Settings.System.getInt(resolver,
-            Settings.System.SHOW_CLEAR_RECENTS_BUTTON, 1) == 1);
+                Settings.System.SHOW_CLEAR_RECENTS_BUTTON, 0) == 1);
         mRecentClearAll.setOnPreferenceChangeListener(this);
         mRecentClearAllPosition = (ListPreference) prefSet.findPreference(RECENT_MENU_CLEAR_ALL_LOCATION);
         String recentClearAllPosition = Settings.System.getString(resolver, Settings.System.CLEAR_RECENTS_BUTTON_LOCATION);
         if (recentClearAllPosition != null) {
-             mRecentClearAllPosition.setValue(recentClearAllPosition);
+            mRecentClearAllPosition.setValue(recentClearAllPosition);
         }
         mRecentClearAllPosition.setOnPreferenceChangeListener(this);
+
+        mShowRecentsMemoryIndicator = (CheckBoxPreference)
+                prefSet.findPreference(SHOW_RECENTS_MEMORY_INDICATOR);
+        mShowRecentsMemoryIndicator.setChecked(Settings.System.getInt(resolver,
+                Settings.System.SHOW_RECENTS_MEMORY_INDICATOR, 0) == 1);
+        mShowRecentsMemoryIndicator.setOnPreferenceChangeListener(this);
+        mRecentsMemoryIndicatorPosition = (ListPreference) prefSet
+                .findPreference(RECENTS_MEMORY_INDICATOR_LOCATION);
+        String recentsMemoryIndicatorPosition = Settings.System.getString(
+                resolver, Settings.System.RECENTS_MEMORY_INDICATOR_LOCATION);
+        if (recentsMemoryIndicatorPosition != null) {
+            mRecentsMemoryIndicatorPosition.setValue(recentsMemoryIndicatorPosition);
+        }
+        mRecentsMemoryIndicatorPosition.setOnPreferenceChangeListener(this);
     }
 
     @Override
@@ -76,6 +95,14 @@
         } else if (preference == mRecentClearAllPosition) {
             String value = (String) objValue;
             Settings.System.putString(resolver, Settings.System.CLEAR_RECENTS_BUTTON_LOCATION, value);
+        } else if (preference == mShowRecentsMemoryIndicator) {
+            boolean value = (Boolean) objValue;
+            Settings.System.putInt(
+                    resolver, Settings.System.SHOW_RECENTS_MEMORY_INDICATOR, value ? 1 : 0);
+        } else if (preference == mRecentsMemoryIndicatorPosition) {
+            String value = (String) objValue;
+            Settings.System.putString(
+                    resolver, Settings.System.RECENTS_MEMORY_INDICATOR_LOCATION, value);
         } else {
             return false;
         }
