diff --git a/gio/gsettings.c b/gio/gsettings.c
index 03aecde..54424b4 100644
--- a/gio/gsettings.c
+++ b/gio/gsettings.c
@@ -338,6 +338,8 @@ struct _GSettingsPrivate
   GSettingsSchema *schema;
   gchar *path;
 
+  gboolean is_static;
+
   GDelayedSettingsBackend *delayed;
 };
 
@@ -349,7 +351,8 @@ enum
   PROP_BACKEND,
   PROP_PATH,
   PROP_HAS_UNAPPLIED,
-  PROP_DELAY_APPLY
+  PROP_DELAY_APPLY,
+  PROP_STATIC
 };
 
 enum
@@ -679,8 +682,9 @@ g_settings_constructed (GObject *object)
   g_settings_backend_watch (settings->priv->backend,
                             &listener_vtable, G_OBJECT (settings),
                             settings->priv->main_context);
-  g_settings_backend_subscribe (settings->priv->backend,
-                                settings->priv->path);
+  if (!settings->priv->is_static)
+      g_settings_backend_subscribe (settings->priv->backend,
+                                    settings->priv->path);
 }
 
 static void
@@ -935,6 +939,22 @@ g_settings_class_init (GSettingsClass *class)
                            P_("Whether this settings object is in 'delay-apply' mode"),
                            FALSE,
                            G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+   /**
+    * GSettings:is-static:
+    *
+    * Whether the #GSettings object is a simple static object, that does not
+    * listen to backend changes.  This mode is useful if you wish to avoid the overhead
+    * incurred by listening for settings changes (or simply aren't interested in them.)
+    *
+    * Since: 2.42
+    */
+   g_object_class_install_property (object_class, PROP_STATIC,
+     g_param_spec_boolean ("is-static",
+                           P_("Static mode"),
+                           P_("Whether this settings object listens to backend changes"),
+                           FALSE,
+                           G_PARAM_READABLE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY);
 }
 
 /* Construction (new, new_with_path, etc.) {{{1 */
@@ -964,6 +984,31 @@ g_settings_new (const gchar *schema_id)
                        NULL);
 }
 
+/**
+ * g_settings_new_static:
+ * @schema_id: the id of the schema
+ *
+ * Creates a new static #GSettings object with the schema specified by
+ * @schema_id.
+ *
+ * blah
+ *
+ * Returns: a new #GSettings object
+ *
+ * Since: 2.42
+ */
+
+GSettings *
+g_settings_new_static (const gchar *schema_id)
+{
+  g_return_val_if_fail (schema_id != NULL, NULL);
+
+  return g_object_new (G_TYPE_SETTINGS,
+                       "schema-id", schema_id,
+                       "is-static", TRUE,
+                       NULL);
+}
+
 static gboolean
 path_is_valid (const gchar *path)
 {
