diff options
author | Eike Stepper | 2012-08-12 17:08:47 +0000 |
---|---|---|
committer | Eike Stepper | 2012-08-12 17:08:47 +0000 |
commit | 2e3366ce7f4d707ff34839dcc693defac9162250 (patch) | |
tree | 29faa4ce6823620219fde64f8c928ccdcb006668 /plugins | |
parent | 3f4a6cc6ab2f5396a0517cf4221736e0d97e9199 (diff) | |
download | cdo-2e3366ce7f4d707ff34839dcc693defac9162250.tar.gz cdo-2e3366ce7f4d707ff34839dcc693defac9162250.tar.xz cdo-2e3366ce7f4d707ff34839dcc693defac9162250.zip |
Reduce objects that are weakly reachable through ReflectUtil.ids
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/ReflectUtil.java | 33 | ||||
-rw-r--r-- | plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/buffer/Buffer.java | 7 |
2 files changed, 30 insertions, 10 deletions
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/ReflectUtil.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/ReflectUtil.java index c429642a00..92a28b2ad3 100644 --- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/ReflectUtil.java +++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/ReflectUtil.java @@ -39,18 +39,25 @@ import java.util.WeakHashMap; */ public final class ReflectUtil { - private static final String NAMESPACE_SEPARATOR = "."; //$NON-NLS-1$ - public static final Class<Object> ROOT_CLASS = Object.class; public static final Class<?>[] NO_PARAMETERS = null; public static final Object[] NO_ARGUMENTS = null; + private static final String NAMESPACE_SEPARATOR = "."; //$NON-NLS-1$ + private static final Method HASH_CODE_METHOD = lookupHashCodeMethod(); private static final Map<Object, Long> ids = new WeakHashMap<Object, Long>(); + private static final Long FAKE_ID = 0L; + + /** + * @since 3.3 + */ + public static boolean REMEMBER_IDS = false; + public static boolean DUMP_STATICS = false; private static long lastID; @@ -237,14 +244,19 @@ public final class ReflectUtil public static synchronized Long getID(Object object) { - Long id = ids.get(object); - if (id == null) + if (REMEMBER_IDS) { - id = ++lastID; - ids.put(object, id); + Long id = ids.get(object); + if (id == null) + { + id = ++lastID; + ids.put(object, id); + } + + return id; } - return id; + return FAKE_ID; } public static String getPackageName(Class<? extends Object> c) @@ -322,7 +334,12 @@ public final class ReflectUtil name = "anonymous"; //$NON-NLS-1$ } - return name + "@" + getID(object); //$NON-NLS-1$ + if (REMEMBER_IDS) + { + return name + "@" + getID(object); //$NON-NLS-1$ + } + + return name; } public static void dump(Object object) diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/buffer/Buffer.java b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/buffer/Buffer.java index 815068a401..79ca1e4d07 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/buffer/Buffer.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/buffer/Buffer.java @@ -16,7 +16,6 @@ import org.eclipse.net4j.buffer.IBuffer; import org.eclipse.net4j.buffer.IBufferProvider; import org.eclipse.net4j.util.HexUtil; import org.eclipse.net4j.util.IErrorHandler; -import org.eclipse.net4j.util.ReflectUtil; import org.eclipse.net4j.util.StringUtil; import org.eclipse.net4j.util.om.trace.ContextTracer; @@ -40,6 +39,10 @@ public class Buffer implements InternalBuffer private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG_BUFFER, Buffer.class); + private static int lastID; + + private int id = ++lastID; + private IErrorHandler errorHandler; private IBufferProvider bufferProvider; @@ -359,7 +362,7 @@ public class Buffer implements InternalBuffer @Override public String toString() { - return MessageFormat.format("Buffer@{0}[{1}]", ReflectUtil.getID(this), state); //$NON-NLS-1$ + return MessageFormat.format("Buffer@{0}[{1}]", id, state); //$NON-NLS-1$ } @SuppressWarnings("deprecation") |