Package com.biglybt.core.util
Class StringInterner
- java.lang.Object
-
- com.biglybt.core.util.StringInterner
-
public class StringInterner extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
StringInterner.WeakByteArrayEntry
private static class
StringInterner.WeakCharArrayEntry
private static class
StringInterner.WeakEntry
private static class
StringInterner.WeakFileEntry
private static class
StringInterner.WeakStringEntry
private static class
StringInterner.WeakURLEntry
private static class
StringInterner.WeakWeightedEntry
-
Field Summary
Fields Modifier and Type Field Description private static ByteArrayHashMap
byte_map
private static java.lang.String[]
COMMON_KEYS
static boolean
DISABLE_INTERNING
Can't be final as set true for a few specific appsprivate static int
IMMEDIATE_CLEANUP_GOAL
private static int
IMMEDIATE_CLEANUP_TRIGGER
private static LightHashSet
managedInterningSet
private static java.lang.ref.ReferenceQueue
managedRefQueue
(package private) static java.util.concurrent.locks.ReadWriteLock
managedSetLock
private static java.util.Comparator
savingsComp
private static int
SCHEDULED_AGING_THRESHOLD
private static int
SCHEDULED_CLEANUP_GOAL
private static int
SCHEDULED_CLEANUP_INTERVAL
private static int
SCHEDULED_CLEANUP_TRIGGER
private static boolean
TRACE_CLEANUP
private static boolean
TRACE_MULTIHITS
private static LightHashSet
unmanagedInterningSet
private static java.lang.ref.ReferenceQueue
unmanagedRefQueue
-
Constructor Summary
Constructors Constructor Description StringInterner()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.lang.String
intern(byte[] bytes)
static char[]
intern(char[] toIntern)
static java.lang.String
intern(java.lang.String toIntern)
static byte[]
internBytes(byte[] toIntern)
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.static java.lang.Object
internObject(java.lang.Object toIntern)
A generic interning facilty for heavyweight or frequently duplicated Objects that have a reasonableequals()
implementation.
Important: The objects should have a limited lifespan, the interning set used by this method is unmanaged, i.e.static java.net.URL
internURL(java.net.URL toIntern)
private static void
sanitize(boolean scheduled)
private static void
sanitizeLight()
-
-
-
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
-
TRACE_CLEANUP
private static final boolean TRACE_CLEANUP
- See Also:
- Constant Field Values
-
TRACE_MULTIHITS
private static final boolean TRACE_MULTIHITS
- 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
-
byte_map
private static final ByteArrayHashMap byte_map
-
savingsComp
private static final java.util.Comparator savingsComp
-
-
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 reasonableequals()
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)
-
-