Class StringInterner


  • public class StringInterner
    extends java.lang.Object
    • Field Detail

      • DISABLE_INTERNING

        public static boolean DISABLE_INTERNING
        Can't be final as set true for a few specific apps
      • SCHEDULED_CLEANUP_INTERVAL

        private static final int SCHEDULED_CLEANUP_INTERVAL
        See Also:
        Constant Field Values
      • IMMEDIATE_CLEANUP_TRIGGER

        private static final int IMMEDIATE_CLEANUP_TRIGGER
        See Also:
        Constant Field Values
      • IMMEDIATE_CLEANUP_GOAL

        private static final int IMMEDIATE_CLEANUP_GOAL
        See Also:
        Constant Field Values
      • SCHEDULED_CLEANUP_TRIGGER

        private static final int SCHEDULED_CLEANUP_TRIGGER
        See Also:
        Constant Field Values
      • SCHEDULED_CLEANUP_GOAL

        private static final int SCHEDULED_CLEANUP_GOAL
        See Also:
        Constant Field Values
      • SCHEDULED_AGING_THRESHOLD

        private static final int SCHEDULED_AGING_THRESHOLD
        See Also:
        Constant Field Values
      • managedInterningSet

        private static final LightHashSet managedInterningSet
      • unmanagedInterningSet

        private static final LightHashSet unmanagedInterningSet
      • managedSetLock

        static final java.util.concurrent.locks.ReadWriteLock managedSetLock
      • managedRefQueue

        private static final java.lang.ref.ReferenceQueue managedRefQueue
      • unmanagedRefQueue

        private static final java.lang.ref.ReferenceQueue unmanagedRefQueue
      • COMMON_KEYS

        private static final java.lang.String[] COMMON_KEYS
      • savingsComp

        private static final java.util.Comparator savingsComp
    • Constructor Detail

      • StringInterner

        public StringInterner()
    • Method Detail

      • intern

        public static java.lang.String intern​(byte[] bytes)
      • internObject

        public static java.lang.Object internObject​(java.lang.Object toIntern)
        A generic interning facilty for heavyweight or frequently duplicated Objects that have a reasonable equals() implementation.

        Important: The objects should have a limited lifespan, the interning set used by this method is unmanaged, i.e. does not clean out old entries! Entries without strong references are still removed.
      • intern

        public static java.lang.String intern​(java.lang.String toIntern)
      • intern

        public static char[] intern​(char[] toIntern)
      • internBytes

        public static byte[] internBytes​(byte[] toIntern)
      • internFile

        public static java.io.File internFile​(java.io.File toIntern)
        This is based on File.hashCode() and File.equals(), which can return different values for different representations of the same paths. Thus internFile should be used with canonized Files exclusively
      • internURL

        public static java.net.URL internURL​(java.net.URL toIntern)
      • sanitizeLight

        private static void sanitizeLight()
      • sanitize

        private static void sanitize​(boolean scheduled)