Skip to content

Commit b55b54a

Browse files
authored
Merge pull request #63 from eclipse-mat/slow-object-marker-cleanup
perf: use Set instead of List to track subClasses in GarbageCleaner
2 parents 9a7e6e7 + a55f8ac commit b55b54a

File tree

1 file changed

+6
-4
lines changed
  • plugins/org.eclipse.mat.parser/src/org/eclipse/mat/parser/model

1 file changed

+6
-4
lines changed

plugins/org.eclipse.mat.parser/src/org/eclipse/mat/parser/model/ClassImpl.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919
import java.util.ArrayList;
2020
import java.util.Arrays;
2121
import java.util.Collections;
22+
import java.util.LinkedHashSet;
2223
import java.util.LinkedList;
2324
import java.util.List;
25+
import java.util.Set;
2426
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
2527
import java.util.concurrent.atomic.AtomicLongFieldUpdater;
2628

@@ -67,7 +69,7 @@ public class ClassImpl extends AbstractObjectImpl implements IClass, Comparable<
6769
protected volatile long totalSize;
6870
protected boolean isArrayType;
6971

70-
private List<IClass> subClasses;
72+
private Set<IClass> subClasses;
7173

7274
private Serializable cacheEntry;
7375

@@ -392,14 +394,14 @@ void removeInstanceBulk(int instanceCount, long heapSize)
392394
@SuppressWarnings("unchecked")
393395
public List<IClass> getSubclasses()
394396
{
395-
return subClasses != null ? subClasses : Collections.EMPTY_LIST;
397+
return (subClasses == null) ? Collections.emptyList() : new ArrayList<>(subClasses);
396398
}
397399

398400
@Override
399401
public List<IClass> getAllSubclasses()
400402
{
401403
if (subClasses == null || subClasses.isEmpty())
402-
return new ArrayList<IClass>();
404+
return Collections.emptyList();
403405

404406
List<IClass> answer = new ArrayList<IClass>(subClasses.size() * 2);
405407
answer.addAll(this.subClasses);
@@ -453,7 +455,7 @@ public int getClassLoaderId()
453455
public void addSubClass(ClassImpl clazz)
454456
{
455457
if (subClasses == null)
456-
subClasses = new ArrayList<IClass>();
458+
subClasses = new LinkedHashSet<IClass>();
457459
subClasses.add(clazz);
458460
}
459461

0 commit comments

Comments
 (0)