< prev index next >

src/java.base/share/classes/java/nio/file/FileSystems.java

Print this page
8213406: (fs) More than one instance of built-in FileSystem observed in heap
Reviewed-by: alanb, cushon, weijun

@@ -35,10 +35,11 @@
 import java.util.Map;
 import java.util.ServiceConfigurationError;
 import java.util.ServiceLoader;
 
 import jdk.internal.misc.VM;
+import sun.nio.fs.DefaultFileSystemProvider;
 
 /**
  * Factory methods for file systems. This class defines the {@link #getDefault
  * getDefault} method to get the default file system and factory methods to
  * construct other types of file systems.

@@ -86,20 +87,10 @@
  */
 
 public final class FileSystems {
     private FileSystems() { }
 
-    // Built-in file system provider
-    private static final FileSystemProvider builtinFileSystemProvider =
-        sun.nio.fs.DefaultFileSystemProvider.create();
-
-    // built-in file system
-    private static class BuiltinFileSystemHolder {
-        static final FileSystem builtinFileSystem =
-            builtinFileSystemProvider.getFileSystem(URI.create("file:///"));
-    }
-
     // lazy initialization of default file system
     private static class DefaultFileSystemHolder {
         static final FileSystem defaultFileSystem = defaultFileSystem();
 
         // returns default file system

@@ -116,11 +107,12 @@
             return provider.getFileSystem(URI.create("file:///"));
         }
 
         // returns default provider
         private static FileSystemProvider getDefaultProvider() {
-            FileSystemProvider provider = builtinFileSystemProvider;
+            FileSystemProvider provider =
+                DefaultFileSystemProvider.FILE_SYSTEM_PROVIDER;
 
             // if the property java.nio.file.spi.DefaultFileSystemProvider is
             // set then its value is the name of the default provider (or a list)
             String prop = "java.nio.file.spi.DefaultFileSystemProvider";
             String propValue = System.getProperty(prop);

@@ -187,11 +179,11 @@
      */
     public static FileSystem getDefault() {
         if (VM.isModuleSystemInited()) {
             return DefaultFileSystemHolder.defaultFileSystem;
         } else {
-            return BuiltinFileSystemHolder.builtinFileSystem;
+            return DefaultFileSystemProvider.FILE_SYSTEM;
         }
     }
 
     /**
      * Returns a reference to an existing {@code FileSystem}.
< prev index next >