On 12/6/17 6:08 PM, Martin Buchholz wrote:
Google decided that LinkedList is almost never the best choice, so any use of LinkedList is discouraged.

ArrayDeque's backing array never shrinks, so you might want to give it an explicit initial size.


The initial size is 16 which is okay.  I can make it smaller instead:

-        static Deque<NativeLibrary> nativeLibraryContext = new LinkedList<>(); +        static Deque<NativeLibrary> nativeLibraryContext = new ArrayDeque<>(8);

Mandy
On Wed, Dec 6, 2017 at 4:33 PM, mandy chung <mandy.ch...@oracle.com <mailto:mandy.ch...@oracle.com>> wrote:

    A tiny startup fix - useArrayDeque instead of LinkedList for
    ClassLoader.NativeLibrary which is typically loaded at startup for
    example when loading a JAR file.

    Thanks
    Mandy

    diff --git
    a/src/java.base/share/classes/java/lang/ClassLoader.java
    b/src/java.base/share/classes/java/lang/ClassLoader.java
    --- a/src/java.base/share/classes/java/lang/ClassLoader.java
    +++ b/src/java.base/share/classes/java/lang/ClassLoader.java
    @@ -38,6 +38,7 @@
     import java.security.PrivilegedAction;
     import java.security.ProtectionDomain;
     import java.security.cert.Certificate;
    +import java.util.ArrayDeque;
     import java.util.Arrays;
     import java.util.Collections;
     import java.util.Deque;
    @@ -45,7 +46,6 @@
     import java.util.HashMap;
     import java.util.HashSet;
     import java.util.Hashtable;
    -import java.util.LinkedList;
     import java.util.Map;
     import java.util.NoSuchElementException;
     import java.util.Objects;
    @@ -2496,7 +2496,7 @@
             }

             // native libraries being loaded
    -        static Deque<NativeLibrary> nativeLibraryContext = new
    LinkedList<>();
    +        static Deque<NativeLibrary> nativeLibraryContext = new
    ArrayDeque<>();

             /*
              * The run() method will be invoked when this class
    loader becomes



Reply via email to