Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2012-08-12 17:08:47 +0000
committerEike Stepper2012-08-12 17:08:47 +0000
commit2e3366ce7f4d707ff34839dcc693defac9162250 (patch)
tree29faa4ce6823620219fde64f8c928ccdcb006668 /plugins
parent3f4a6cc6ab2f5396a0517cf4221736e0d97e9199 (diff)
downloadcdo-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.java33
-rw-r--r--plugins/org.eclipse.net4j/src/org/eclipse/internal/net4j/buffer/Buffer.java7
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")

Back to the top