blob: 70197d3a2e4026a3d6134141839fdc9c17c5258d [file] [log] [blame]
<?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 lang="en-us" xml:lang="en-us">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<meta content="reference" name="DC.Type" />
<meta name="DC.Title" content="New and Noteworthy" />
<meta name="abstract" content="Here are descriptions of some of the more interesting or significant changes made to the Memory Analyzer for the 1.3 release." />
<meta name="description" content="Here are descriptions of some of the more interesting or significant changes made to the Memory Analyzer for the 1.3 release." />
<meta name="copyright" content="Copyright (c) 2008, 2013 SAP AG 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, 2013 SAP AG 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 content="XHTML" name="DC.Format" />
<meta content="ref_noteworthy" name="DC.Identifier" />
<meta content="en-us" name="DC.Language" />
<link href="styles/commonltr.css" type="text/css" rel="stylesheet" />
<title>New and Noteworthy</title>
</head>
<body id="ref_noteworthy"><a name="ref_noteworthy"><!-- --></a>
<h1 class="topictitle1">New and Noteworthy</h1>
<div><p>Here are descriptions of some of the more interesting or
significant changes made to the Memory Analyzer for the 1.3 release.
</p>
<div class="section"><h2 class="sectiontitle">Support for Multiple Snapshots in One Heap Dump File</h2>
<div class="p">
Occasionally heap dumps files can be generated which contain multiple heap dumps snapshots.
If an HPROF dump is generated using
<pre class="codeblock">-agentlib:hprof=heap=dump,format=b</pre>
then if a heap dump is triggered multiple times all the heap dumps will be written to one file.
An IBM z/OS system dump can contain data from multiple address spaces and processes.
It is therefore possible that the dump file contains heap dump snapshots from multiple Java runtimes.
</div>
<p>
Memory Analyzer 1.2 and earlier handled this situation by choosing the first heap dump snapshot found unless another
was selected via an environment variable or MAT DTFJ configuration option.
</p>
<p>
Memory Analyzer 1.3 handles this situation by detecting the multiple dumps, then presenting a dialog
for the user to select the required snapshot.
</p>
<img src="mimes/multiple_snapshots.png" alt="Choose a snapshot to be analyzed" />
<p>
Further details can be found in the documentation under "Acquiring Heap Dumps"
</p>
</div>
<div class="section"><h2 class="sectiontitle">Improved Autocompletion in the OQL Editor</h2>
<p>The autocompletion capabilities have been extended.
</p>
<p>
Autocompletion
for <span class="keyword">SELECT</span> and <span class="keyword">WHERE</span> clauses
can also supply field names. The class
for the field names is selected in the <span class="keyword">FROM</span> clause by typing space
after the class name. This brings up a context information box, and
selects that class as the active class for field names.
<br /><div class="imageleft"><img src="mimes/oql_completion3.png" /></div><br />
Suggestions are then provided in the <span class="keyword">SELECT</span> or
<span class="keyword">WHERE</span> clauses on typing '.' or '@' or control-space.
<br /><div class="imageleft"><img src="mimes/oql_completion4.png" /></div><br />
Attributes begin with '@' and the autocompletion is filtered based on
what has been typed so far.
<br /><div class="imageleft"><img src="mimes/oql_completion5.png" /></div><br />
In <span class="keyword">SELECT</span> and <span class="keyword">WHERE</span> clauses there are also suggestions for methods on
key Memory Analyzer objects representing contents of the snapshot.
<br /><div class="imageleft"><img src="mimes/oql_completion6.png" /></div><br />
Pressing enter adds the selected text to the command window.
<br /><div class="imageleft"><img src="mimes/oql_completion7.png" /></div><br />
</p>
</div>
<div class="section"><h2 class="sectiontitle">OQL - Accessing Objects by Index in Arrays and Lists</h2>
<p>
The OQL syntax was extended to support accessing objects inside arrays and Lists by using an index.
Here some examples:
</p>
<div class="p">
Reading values from primitive arrays:
<pre class="codeblock">SELECT s[2] FROM int[] s WHERE (s.@length &gt; 2)</pre>
</div>
<div class="p">
Reading values from object arrays:
<pre class="codeblock">SELECT s[2] FROM java.lang.Object[] s WHERE (s.@length &gt; 2)</pre>
</div>
<div class="p">
Reading values from lists:
<pre class="codeblock">SELECT s.@GCRoots.subList(1,3)[1] FROM OBJECTS ${snapshot} s</pre>
</div>
<p>For further details see "Reference / OQL Syntax / Property Accessors" in the Memory Analyzer documentation
</p>
</div>
<div class="section"><h2 class="sectiontitle">Reusing OQL Results</h2>
<p>
It is now easier to reuse the results of executed OQL queries
</p>
<p>
The navigation history shows previous OQL queries. Clicking on a previous query
executes it again. On many result panes, selecting some objects, then
<span class="menucascade">
<span class="uicontrol">Copy</span>
&gt; <span class="uicontrol">OQL Query</span>
</span>
copies an OQL representation of the objects. This OQL can then be pasted
into the OQL editor text area.
This works from the OQL result area itself, and also copies the column details as well as the objects.
</p>
<p>
<img src="mimes/oqlsaveresult.png" alt="screen shot of OQL navigation and copy OQL query" />
</p>
</div>
<div class="section"><h2 class="sectiontitle">Threads Overview Button</h2>
<p>
Inspecting the threads and their stack-traces proved to be a very useful feature.
To simplify the access to this information, a button was added directly to the toolbar, and the two old queries "thread stacks"
and "thread overview" were merged into one.
This way, just a single click is enough to get the overview of all threads and start inspecting
their stacks. For more details see "Tasks / Analyzing Threads" in the Memory Analyzer documentation.
</p>
<p>
<img src="mimes/threads_overview.png" alt="Threads overview and stacks" />
</p>
</div>
<div class="section"><h2 class="sectiontitle">Support for Huge Heap Dumps</h2>
<p>
Older versions of MAT had limitations on the number of objects in the heap (caused by some internal structures used).
This is reworked, and there were reports of successfully processing a 48 GB / 900 million+ objects heap dump.
</p>
</div>
<div class="section"><h2 class="sectiontitle">Performance Improvements</h2>
<p>An issue where parsing a dump with more than 850 million objects took ages is now fixed.</p>
<p>An issue where the dominator tree calculation sometimes took ages is now fixed.</p>
<p>There is a performance optimization in the retained set calculation</p>
</div>
<div class="section"><h2 class="sectiontitle">New and Noteworthy for Memory Analyzer 1.2</h2>
<p>
The New and Noteworthy document for version 1.2 is available
<a href="http://www.eclipse.org/mat/1.2.0/noteworthy.html">here</a>.
</p>
</div>
</div>
</body>
</html>