diff --git a/core/lib/Drupal/Component/Plugin/PluginBag.php b/core/lib/Drupal/Component/Plugin/PluginBag.php
index 2625201..ec45973 100644
--- a/core/lib/Drupal/Component/Plugin/PluginBag.php
+++ b/core/lib/Drupal/Component/Plugin/PluginBag.php
@@ -196,4 +196,13 @@ public function count() {
     return count($this->instanceIDs);
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function __sleep() {
+    // Do not serialize instantiated plugins.
+    $this->pluginInstances = array();
+    return array_keys(get_object_vars($this));
+  }
+
 }
diff --git a/core/lib/Drupal/Core/Site/Settings.php b/core/lib/Drupal/Core/Site/Settings.php
index 3ac0f03..11ba73b 100644
--- a/core/lib/Drupal/Core/Site/Settings.php
+++ b/core/lib/Drupal/Core/Site/Settings.php
@@ -52,6 +52,20 @@ public static function getInstance() {
   }
 
   /**
+   * Protect creating with clone.
+   */
+  private function __clone() {
+    return self::$instance;
+  }
+
+  /**
+   * Protect creating with unserialize.
+   */
+  public function __wakeup() {
+    return self::$instance;
+  }
+
+  /**
    * Returns a setting.
    *
    * Settings can be set in settings.php in the $settings array and requested
diff --git a/core/modules/update/src/UpdateManager.php b/core/modules/update/src/UpdateManager.php
index a1801fe..007392e 100644
--- a/core/modules/update/src/UpdateManager.php
+++ b/core/modules/update/src/UpdateManager.php
@@ -7,6 +7,7 @@
 namespace Drupal\update;
 
 use Drupal\Core\Config\ConfigFactoryInterface;
+use Drupal\Core\DependencyInjection\DependencySerializationTrait;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\KeyValueStore\KeyValueFactoryInterface;
 use Drupal\Core\StringTranslation\TranslationInterface;
@@ -18,6 +19,7 @@
  */
 class UpdateManager implements UpdateManagerInterface {
   use StringTranslationTrait;
+  use DependencySerializationTrait;
 
   /**
    * The update settings
