blob: b0895e3d7dab6f73897cf411141363d235aa962e [file]
<?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> &gt; <span class="ph uicontrol">Java Collections</span></span>
</p>
</div>
</div>
</body>
</html>