diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php
index 0e679fd..c397b2d 100644
--- a/core/lib/Drupal/Core/DrupalKernel.php
+++ b/core/lib/Drupal/Core/DrupalKernel.php
@@ -216,6 +216,7 @@ public static function createFromRequest(Request $request, $class_loader, $envir
     // Include our bootstrap file.
     $core_root = dirname(dirname(dirname(__DIR__)));
     require_once $core_root . '/includes/bootstrap.inc';
+    $class_loader_class = get_class($class_loader);
 
     $kernel = new static($environment, $class_loader, $allow_dumping);
 
@@ -244,6 +245,18 @@ public static function createFromRequest(Request $request, $class_loader, $envir
       $response->prepare($request)->send();
     }
 
+    // If the class loader is still the same, possibly upgrade to the APCu class loader.
+    if ($class_loader_class == get_class($class_loader)
+        && Settings::get('class_loader_auto_detect', TRUE)
+        && Settings::get('hash_salt', FALSE)
+        && function_exists('apcu_enabled')
+        && apcu_enabled()) {
+      $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader('drupal.' . Settings::get('hash_salt'), $class_loader);
+      $class_loader->unregister();
+      $apc_loader->register();
+      $class_loader = $apc_loader;
+    }
+
     return $kernel;
   }
 
diff --git a/core/rebuild.php b/core/rebuild.php
index 7ca8af7..ee4ceb2 100644
--- a/core/rebuild.php
+++ b/core/rebuild.php
@@ -20,6 +20,11 @@
 // Change the directory to the Drupal root.
 chdir('..');
 
+// Clear the APCu cache to ensure APC classloader is reset.
+if (function_exists('apcu_enabled') && apcu_enabled()) {
+  apc_clear_cache();
+}
+
 $autoloader = require_once __DIR__ . '/vendor/autoload.php';
 require_once __DIR__ . '/includes/utility.inc';
 
diff --git a/sites/default/default.settings.php b/sites/default/default.settings.php
index d5d8704..014816a 100644
--- a/sites/default/default.settings.php
+++ b/sites/default/default.settings.php
@@ -379,7 +379,12 @@
  * To do so, you may decorate and replace the local $class_loader variable.
  *
  * For example, to use Symfony's APC class loader, uncomment the code below.
+ *
+ * The Symfony APC class loader is used by default when the APCu extension is detected.
+ * You can disable this detection by setting 'class_loader_auto_detect' => FALSE.
  */
+# $settings['class_loader_auto_detect'] = FALSE;
+
 /*
 if ($settings['hash_salt']) {
   $apc_loader = new \Symfony\Component\ClassLoader\ApcClassLoader('drupal.' . $settings['hash_salt'], $class_loader);
