Integrated: 8279194: Add Annotated Memory Viewer feature to SA's HSDB

Chris Plummer cjplummer at openjdk.java.net
Tue Jan 18 19:24:28 UTC 2022


On Thu, 23 Dec 2021 03:31:44 GMT, Chris Plummer <cjplummer at openjdk.org> wrote:

> HSDB has a Memory Viewer feature that brings up a window that shows the memory contents in a specific address range. It basically looks just like the clhsdb "mem" output. The recently revived "mem" command (see [JDK-824466](https://bugs.openjdk.java.net/browse/JDK-8244669) and PR #6902) adds a -v options which causes PointerFinder (aka findpc) to be called on each value in memory to provide details about what the value points to (if it is an address). This PR adds this same feature to HSDB by adding a new Annotated Memory Viewer window. See the [this image](https://bugs.openjdk.java.net/secure/attachment/97439/memory_viewer.png) which shows the current Memory Viewer window, and just below it the new Annotated Memory Viewer window showing the same address range. 
> 
> A couple of implementation notes. Both types of memory viewers share the MemoryPanel class. The traditional viewer uses two columns, one for the  address and one for its contents. The annotated viewer uses just one column which contains the entire line. For example:
> 
>   0x00007f7eb010c330: 0x00007f7eb6c9dfb0 vtable for os::PlatformMonitor + 0x10
> 
> This approach was chosen rather than using 3 columns because it was a difficult to get the first two columns to be just wide enough for the 64-bit values while having the 3rd column be a long line of text. You end up with a lot of wasted space in the first two columns as you make the window wider while trying to get all the text of the 3rd column into view.
> 
> Regarding the changes in MemoryPanel.handleImport(), Memory Viewer supports clicking on a value that's an address and dragging it back onto the window to start displaying memory at that address. This dropped text ends up being processed by MemoryPanel.handleImport(). When you try this with Annotated Memory Viewer, you end up with the entire line being passed to MemoryPanel.handleImport(), not just an address (one downside of going with just 1 column instead of 3). So the changes in MemoryPanel.handleImport() detect this and pull the desired address out of the string.

This pull request has now been integrated.

Changeset: fd9fb9a4
Author:    Chris Plummer <cjplummer at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/fd9fb9a4af149177c2a8d6ab20782d7a0b5bc113
Stats:     84 lines in 3 files changed: 65 ins; 2 del; 17 mod

8279194: Add Annotated Memory Viewer feature to SA's HSDB

Reviewed-by: sspitsyn, ysuenaga

-------------

PR: https://git.openjdk.java.net/jdk/pull/6923


More information about the serviceability-dev mailing list