diff --git a/core/core.services.yml b/core/core.services.yml
index 2b31f93..c3689fa 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -18,7 +18,6 @@ services:
     class: Drupal\Core\Cache\CacheBackendInterface
     tags:
       - { name: cache.bin }
-      - { name: persist }
     factory_method: get
     factory_service: cache_factory
     arguments: [config]
@@ -74,12 +73,9 @@ services:
   config.storage:
     class: Drupal\Core\Config\CachedStorage
     arguments: ['@config.cachedstorage.storage', '@cache.config']
-    tags:
-      - { name: persist }
   config.factory:
     class: Drupal\Core\Config\ConfigFactory
     tags:
-      - { name: persist }
       - { name: event_subscriber }
     arguments: ['@config.storage', '@event_dispatcher', '@config.typed']
   config.installer:
@@ -134,8 +130,6 @@ services:
   state:
     class: Drupal\Core\KeyValueStore\State
     arguments: ['@keyvalue']
-    tags:
-      - { name: persist }
   queue:
     class: Drupal\Core\Queue\QueueFactory
     arguments: ['@settings']
@@ -178,8 +172,6 @@ services:
   container.namespaces:
     class: ArrayObject
     arguments: [ '%container.namespaces%' ]
-    tags:
-      - { name: persist }
   default_plugin_manager:
     abstract: true
     arguments: ['@container.namespaces', '@cache.cache', '@language_manager', '@module_handler']
diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php
index f9107fe..4719368 100644
--- a/core/lib/Drupal/Core/DrupalKernel.php
+++ b/core/lib/Drupal/Core/DrupalKernel.php
@@ -362,7 +362,6 @@ protected function getKernelParameters() {
    */
   protected function initializeContainer() {
     $this->containerNeedsDumping = FALSE;
-    $persist = $this->getServicesToPersist();
     // The request service requires custom persisting logic, since it is also
     // potentially scoped. During Drupal installation, there is a request
     // service without a request scope.
@@ -388,7 +387,6 @@ protected function initializeContainer() {
       if (class_exists($class, FALSE)) {
         $fully_qualified_class_name = '\\' . $class;
         $this->container = new $fully_qualified_class_name;
-        $this->persistServices($persist);
       }
     }
     // First check whether the list of modules changed in this request.
@@ -413,7 +411,6 @@ protected function initializeContainer() {
         $this->moduleList = $this->container->get('config.factory')->get('system.module')->get('enabled');
       }
       if (array_keys($this->moduleList) !== array_keys($container_modules)) {
-        $persist = $this->getServicesToPersist();
         unset($this->container);
         // Revert the class loader to its prior state. However,
         // registerNamespaces() performs a merge rather than replace, so to
@@ -427,15 +424,6 @@ protected function initializeContainer() {
 
     if (!isset($this->container)) {
       $this->container = $this->buildContainer();
-      $this->persistServices($persist);
-
-      // The namespaces are marked as persistent, so objects like the annotated
-      // class discovery still has the right object. We may have updated the
-      // list of modules, so set it.
-      if ($this->container->initialized('container.namespaces')) {
-        $this->container->get('container.namespaces')->exchangeArray($this->container->getParameter('container.namespaces'));
-      }
-
       if ($this->allowDumping) {
         $this->containerNeedsDumping = TRUE;
       }
@@ -456,35 +444,6 @@ protected function initializeContainer() {
   }
 
   /**
-   * Returns service instances to persist from an old container to a new one.
-   */
-  protected function getServicesToPersist() {
-    $persist = array();
-    if (isset($this->container)) {
-      foreach ($this->container->getParameter('persistIds') as $id) {
-        // It's pointless to persist services not yet initialized.
-        if ($this->container->initialized($id)) {
-          $persist[$id] = $this->container->get($id);
-        }
-      }
-    }
-    return $persist;
-  }
-
-  /**
-   * Moves persistent service instances into a new container.
-   */
-  protected function persistServices(array $persist) {
-    foreach ($persist as $id => $object) {
-      // Do not override services already set() on the new container, for
-      // example 'service_container'.
-      if (!$this->container->initialized($id)) {
-        $this->container->set($id, $object);
-      }
-    }
-  }
-
-  /**
    * Builds the service container.
    *
    * @return ContainerBuilder The compiled service container
@@ -536,18 +495,6 @@ protected function buildContainer() {
       }
     }
 
-    // Identify all services whose instances should be persisted when rebuilding
-    // the container during the lifetime of the kernel (e.g., during a kernel
-    // reboot). Include synthetic services, because by definition, they cannot
-    // be automatically reinstantiated. Also include services tagged to persist.
-    $persist_ids = array();
-    foreach ($container->getDefinitions() as $id => $definition) {
-      if ($definition->isSynthetic() || $definition->getTag('persist')) {
-        $persist_ids[] = $id;
-      }
-    }
-    $container->setParameter('persistIds', $persist_ids);
-
     $container->compile();
     return $container;
   }
diff --git a/core/modules/ckeditor/lib/Drupal/ckeditor/Tests/CKEditorPluginManagerTest.php b/core/modules/ckeditor/lib/Drupal/ckeditor/Tests/CKEditorPluginManagerTest.php
index db1c6a4..40485ee 100644
--- a/core/modules/ckeditor/lib/Drupal/ckeditor/Tests/CKEditorPluginManagerTest.php
+++ b/core/modules/ckeditor/lib/Drupal/ckeditor/Tests/CKEditorPluginManagerTest.php
@@ -81,6 +81,7 @@ function testEnabledPlugins() {
     // variations of it, to cover all possible ways a plugin can be enabled) and
     // clear the editor manager's cache so it is picked up.
     $this->enableModules(array('ckeditor_test'));
+    $this->manager = $this->container->get('plugin.manager.ckeditor.plugin');
     $this->manager->clearCachedDefinitions();
 
     // Case 2: CKEditor plugins are available.
diff --git a/core/modules/edit/lib/Drupal/edit/Tests/EditorSelectionTest.php b/core/modules/edit/lib/Drupal/edit/Tests/EditorSelectionTest.php
index 4ac5fb7..d098761 100644
--- a/core/modules/edit/lib/Drupal/edit/Tests/EditorSelectionTest.php
+++ b/core/modules/edit/lib/Drupal/edit/Tests/EditorSelectionTest.php
@@ -111,6 +111,8 @@ public function testText() {
   public function testTextWysiwyg() {
     // Enable edit_test module so that the 'wysiwyg' editor becomes available.
     $this->enableModules(array('edit_test'));
+    $this->editorManager = $this->container->get('plugin.manager.edit.editor');
+    $this->editorSelector = new EditorSelector($this->editorManager, $this->container->get('plugin.manager.field.formatter'));
 
     $field_name = 'field_textarea';
     $this->createFieldWithInstance(
diff --git a/core/modules/edit/lib/Drupal/edit/Tests/MetadataGeneratorTest.php b/core/modules/edit/lib/Drupal/edit/Tests/MetadataGeneratorTest.php
index ef71da6..acfa148 100644
--- a/core/modules/edit/lib/Drupal/edit/Tests/MetadataGeneratorTest.php
+++ b/core/modules/edit/lib/Drupal/edit/Tests/MetadataGeneratorTest.php
@@ -133,6 +133,9 @@ public function testEditorWithCustomMetadata() {
 
     // Enable edit_test module so that the WYSIWYG editor becomes available.
     $this->enableModules(array('edit_test'));
+    $this->editorManager = $this->container->get('plugin.manager.edit.editor');
+    $this->editorSelector = new EditorSelector($this->editorManager, $this->container->get('plugin.manager.field.formatter'));
+    $this->metadataGenerator = new MetadataGenerator($this->accessChecker, $this->editorSelector, $this->editorManager);
 
     // Create a rich text field.
     $field_name = 'field_rich';
diff --git a/core/modules/editor/lib/Drupal/editor/Tests/EditorManagerTest.php b/core/modules/editor/lib/Drupal/editor/Tests/EditorManagerTest.php
index d97f989..9959992 100644
--- a/core/modules/editor/lib/Drupal/editor/Tests/EditorManagerTest.php
+++ b/core/modules/editor/lib/Drupal/editor/Tests/EditorManagerTest.php
@@ -78,6 +78,7 @@ public function testManager() {
     // Enable the Text Editor Test module, which has the Unicorn Editor and
     // clear the editor manager's cache so it is picked up.
     $this->enableModules(array('editor_test'));
+    $this->editorManager = $this->container->get('plugin.manager.editor');
     $this->editorManager->clearCachedDefinitions();
 
     // Case 2: a text editor available.
diff --git a/core/modules/rest/lib/Drupal/rest/Tests/NodeTest.php b/core/modules/rest/lib/Drupal/rest/Tests/NodeTest.php
index 86df206..c4a1704 100644
--- a/core/modules/rest/lib/Drupal/rest/Tests/NodeTest.php
+++ b/core/modules/rest/lib/Drupal/rest/Tests/NodeTest.php
@@ -17,9 +17,11 @@ class NodeTest extends RESTTestBase {
   /**
    * Modules to enable.
    *
+   * Ensure that the node resource works with comment module enabled.
+   *
    * @var array
    */
-  public static $modules = array('hal', 'rest');
+  public static $modules = array('hal', 'rest', 'comment');
 
   public static function getInfo() {
     return array(
@@ -49,8 +51,6 @@ protected function enableNodeConfiguration($method, $operation) {
    * Performs various tests on nodes and their REST API.
    */
   public function testNodes() {
-    // Tests that the node resource works with comment module enabled.
-    $this->container->get('module_handler')->install(array('comment'));
     $this->enableNodeConfiguration('GET', 'view');
 
     $node = $this->entityCreate('node');
