package ex; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.WeakHashMap; public class PMB_Sample { private static Set<String> bl_data = new HashSet<String>(); // tag private static List<String> data = new ArrayList<String>(); // no tag private static Set<String> inner_data = new HashSet<String>(); // no tag private static StringBuilder return_data = new StringBuilder(); // no tag private static Map<String, String> fp_data = new WeakHashMap<String, String>(); private static final Set<String> bloatableSigs = new HashSet<String>(); static { bloatableSigs.add("Ljava/util/concurrent/ArrayBlockingQueue;"); bloatableSigs.add("Ljava/util/ArrayList;"); bloatableSigs.add("Ljava/util/concurrent/BlockingQueue;"); bloatableSigs.add("Ljava/util/Collection;"); bloatableSigs.add("Ljava/util/concurrent/ConcurrentHashMap;"); bloatableSigs.add("Ljava/util/concurrent/ConcurrentSkipListMap;"); bloatableSigs.add("Ljava/util/concurrent/ConcurrentSkipListSet;"); bloatableSigs.add("Ljava/util/concurrent/CopyOnWriteArraySet;"); bloatableSigs.add("Ljava/util/EnumSet;"); bloatableSigs.add("Ljava/util/EnumMap;"); bloatableSigs.add("Ljava/util/HashMap;"); bloatableSigs.add("Ljava/util/HashSet;"); bloatableSigs.add("Ljava/util/Hashtable;"); bloatableSigs.add("Ljava/util/IdentityHashMap;"); bloatableSigs.add("Ljava/util/concurrent/LinkedBlockingQueue;"); bloatableSigs.add("Ljava/util/LinkedHashMap;"); bloatableSigs.add("Ljava/util/LinkedHashSet;"); bloatableSigs.add("Ljava/util/LinkedList;"); bloatableSigs.add("Ljava/util/List;"); bloatableSigs.add("Ljava/util/concurrent/PriorityBlockingQueue;"); bloatableSigs.add("Ljava/util/PriorityQueue;"); bloatableSigs.add("Ljava/util/Map;"); bloatableSigs.add("Ljava/util/Queue;"); bloatableSigs.add("Ljava/util/Set;"); bloatableSigs.add("Ljava/util/SortedSet;"); bloatableSigs.add("Ljava/util/SortedMap;"); bloatableSigs.add("Ljava/util/Stack;"); bloatableSigs.add("Ljava/lang/StringBuffer;"); bloatableSigs.add("Ljava/lang/StringBuilder;"); bloatableSigs.add("Ljava/util/TreeMap;"); bloatableSigs.add("Ljava/util/TreeSet;"); bloatableSigs.add("Ljava/util/Vector;"); } // tag private ThreadLocal<DateFormat> local = new ThreadLocal<DateFormat>() { @Override protected DateFormat initialValue() { return new SimpleDateFormat(); } }; private static ThreadLocal<DateFormat> staticLocal = new ThreadLocal<DateFormat>() { @Override protected DateFormat initialValue() { return new SimpleDateFormat(); } }; public void add(String s) { bl_data.add(s); data.add(s); System.out.println(staticLocal); System.out.println(local); } public void remove(String s) { data.remove(s); } public void fpInnerDoesRemove() { inner_data.add("Hello"); Runnable r = new Runnable() { @Override public void run() { inner_data.remove("Hello"); } }; r.run(); } public void fpAddToWeakHashMap() { fp_data.put("Hello", "There"); } }