| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE html |
| PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html xml:lang="en-us" lang="en-us"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> |
| <meta name="DC.Type" content="task"/> |
| <meta name="DC.Title" content="Analyzing Java Collection Usage"/> |
| <meta name="copyright" content="Copyright (c) 2008, 2019 SAP AG, IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html " type="primary"/> |
| <meta name="DC.Rights.Owner" content="Copyright (c) 2008, 2019 SAP AG, IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html " type="primary"/> |
| <meta name="DC.Format" content="XHTML"/> |
| <meta name="DC.Identifier" content="task_analyzingjavacollectionusage"/> |
| <meta name="DC.Language" content="en-us"/> |
| <link rel="stylesheet" type="text/css" href="../styles/commonltr.css"/> |
| <title>Analyzing Java Collection Usage</title> |
| </head> |
| <body id="task_analyzingjavacollectionusage"> |
| |
| |
| <h1 class="title topictitle1">Analyzing Java Collection Usage</h1> |
| |
| |
| |
| <div class="body taskbody"> |
| <div class="section context"> |
| <p class="p">A collection is an object that are used to store, retrieve and |
| manipulate the data. Memory Analyzer offers the following queries to |
| analyze java collections:</p> |
| |
| |
| <div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" class="table" frame="border" border="1" rules="all"> |
| <tbody class="tbody"> |
| <tr class="row"> |
| <td class="entry" valign="top"> |
| <strong class="ph b">Array Fill Ratio Query</strong> |
| </td> |
| |
| <td class="entry" valign="top">Prints a frequency distribution of fill ratios of |
| non-primitive arrays. The fill ratio is the proportion of |
| non-null elements in the array. The arrays are then accumulated |
| into as many segments as parameterized. Primitive arrays cannot |
| have null values so this query works only on object arrays. |
| </td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top"> |
| <strong class="ph b">Arrays Grouped by Size Query</strong> |
| </td> |
| |
| <td class="entry" valign="top">Distribution histogram of given arrays grouped |
| by the size.</td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top"> |
| <strong class="ph b">Collection Fill Ratio Query</strong> |
| </td> |
| |
| <td class="entry" valign="top"> |
| <p class="p">Prints a frequency distribution of fill ratios of given |
| collections. The following collections can be used for the |
| query:</p> |
| |
| <ul class="ul"> |
| <li class="li"> |
| <pre class="pre codeblock">java.awt.RenderingHints</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.beans.beancontext.BeanContextSupport</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.lang.ThreadLocal$ThreadLocalMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.ArrayDeque</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.ArrayList</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Arrays$ArrayList</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$CheckedCollection</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$CheckedMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$CheckedSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$EmptyList</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$EmptyMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$EmptySet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$SetFromMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$SingletonList</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$SingletonSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$SynchronizedCollection</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$SynchronizedSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$UnmodifiableCollection</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$UnmodifiableSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.ArrayBlockingQueue</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.ConcurrentHashMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.ConcurrentLinkedDeque</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.ConcurrentLinkedQueue</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.ConcurrentSkipListMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.CopyOnWriteArrayList</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.DelayQueue</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.LinkedBlockingDeque</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.LinkedBlockingQueue</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.LinkedTransferQueue</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.SynchronousQueue</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.EnumMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.EnumSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.HashMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.HashSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Hashtable</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.IdentityHashMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.ImmutableCollections$List0</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.ImmutableCollections$Set1</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.LinkedHashSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.LinkedList</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.PriorityQueue</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Properties</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.TreeSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.WeakHashMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.jar.Attributes</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">javax.script.SimpleBindings</pre> |
| |
| </li> |
| |
| </ul> |
| |
| <p class="p">One additional custom collection (e.g. non-JDK) collection |
| can be specified by the 'collection', 'size_attribute' and |
| 'array_attribute' argument.</p> |
| |
| </td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top"> |
| <strong class="ph b">Collections Grouped By Size Query</strong> |
| </td> |
| |
| <td class="entry" valign="top"> |
| <p class="p">Distribution histogram of given collections by |
| their size. The following collections can be used for the |
| query. Known collections:</p> |
| |
| <ul class="ul"> |
| <li class="li"> |
| <pre class="pre codeblock">java.awt.RenderingHints</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.beans.beancontext.BeanContextSupport</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.lang.ThreadLocal$ThreadLocalMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.ArrayDeque</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.ArrayList</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Arrays$ArrayList</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$CheckedCollection</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$CheckedMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$CheckedSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$EmptyList</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$EmptyMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$EmptySet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$SetFromMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$SingletonList</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$SingletonMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$SingletonSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$SynchronizedCollection</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$SynchronizedMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$SynchronizedSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$UnmodifiableCollection</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$UnmodifiableMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$UnmodifiableSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.ArrayBlockingQueue</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.ConcurrentHashMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.ConcurrentLinkedDeque</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.ConcurrentLinkedQueue</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.ConcurrentSkipListMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.ConcurrentSkipListSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.CopyOnWriteArrayList</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.CopyOnWriteArraySet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.DelayQueue</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.LinkedBlockingDeque</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.LinkedBlockingQueue</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.LinkedTransferQueue</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.SynchronousQueue</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.EnumMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.EnumSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.HashMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.HashSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Hashtable</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.IdentityHashMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.ImmutableCollections$List0</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.ImmutableCollections$List1</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.ImmutableCollections$List2</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.ImmutableCollections$ListN</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.ImmutableCollections$MapN</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.ImmutableCollections$Set0</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.ImmutableCollections$Set1</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.ImmutableCollections$Set2</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.ImmutableCollections$SetN</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.jar.Attributes</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.LinkedHashMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.LinkedHashSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.LinkedList</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.PriorityQueue</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Properties</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.TreeMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.TreeSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Vector</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.WeakHashMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">javax.script.SimpleBindings</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">javax.swing.UIDefaults</pre> |
| |
| </li> |
| |
| </ul> |
| |
| <p class="p">One additional custom collection (e.g. non-JDK) collection |
| can be specified by the 'collection', 'size_attribute' and |
| 'array_attribute' argument.</p> |
| |
| </td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top"> |
| <strong class="ph b">Extract List Values Query</strong> |
| </td> |
| |
| <td class="entry" valign="top"> |
| <p class="p">Lists elements of a single LinkedList, ArrayList, Vector, |
| CopyOnWriteArrayList, PriorityQueue, ArrayDeque |
| object.</p> |
| |
| |
| </td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top"> |
| <strong class="ph b">Hash Entries Query</strong> |
| </td> |
| |
| <td class="entry" valign="top"> |
| <p class="p">Extracts the key-value pairs from hash maps and |
| hashtables.</p> |
| |
| </td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top"> |
| <strong class="ph b">Extract Hash Set Value Query</strong> |
| </td> |
| |
| <td class="entry" valign="top"> |
| <p class="p">Lists elements of a single HashSet.</p> |
| |
| </td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top"> |
| <strong class="ph b">Map Collision Ratio Query</strong> |
| </td> |
| |
| <td class="entry" valign="top"> |
| <p class="p">Prints a frequency distribution of the collision ratios |
| of map-like collections. The following map-like collections can |
| be used for the query.</p> |
| |
| <ul class="ul"> |
| <li class="li"> |
| <pre class="pre codeblock">java.util.HashMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Properties</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Hashtable</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.WeakHashMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.ConcurrentHashMap$Segment</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.HashSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.ConcurrentHashMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.ConcurrentSkipListMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.concurrent.ConcurrentSkipListSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$CheckedMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$CheckedSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$SynchronizedMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$SynchronizedSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$UnmodifiableMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.Collections$UnmodifiableSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.LinkedHashMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.LinkedHashSet</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.ImmutableCollections$MapN</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.util.jar.Attributes</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.awt.RenderingHints</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.beans.beancontext.BeanContextSupport</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">java.lang.ThreadLocal$ThreadLocalMap</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">javax.script.SimpleBindings</pre> |
| |
| </li> |
| |
| <li class="li"> |
| <pre class="pre codeblock">javax.swing.UIDefaults</pre> |
| |
| </li> |
| |
| </ul> |
| |
| <p class="p"> One additional custom map-like (e.g. non-JDK) collection can |
| be specified by the 'collection', 'size_attribute' and |
| 'array_attribute' argument.</p> |
| |
| </td> |
| |
| </tr> |
| |
| <tr class="row"> |
| <td class="entry" valign="top"> |
| <strong class="ph b">Primitive Arrays with a Constant Value</strong> |
| </td> |
| |
| <td class="entry" valign="top"> |
| Lists all primitive arrays (from a selection) which are filled with one and the |
| same value |
| </td> |
| |
| </tr> |
| |
| </tbody> |
| |
| </table> |
| </div> |
| |
| <p class="p"> |
| All these queries are accessible from the toolbar drop-down menu: |
| <span class="ph menucascade"><span class="ph uicontrol">Open Query Browser</span> > <span class="ph uicontrol">Java Collections</span></span> |
| </p> |
| |
| </div> |
| |
| </div> |
| |
| |
| </body> |
| </html> |