RFR (S) 8073532: jmap -heap fails after generation array removal

Jesper Wilhelmsson jesper.wilhelmsson at oracle.com
Fri Feb 20 12:11:48 UTC 2015


Looks good!
Thanks for fixing this!
/Jesper


Mikael Gerdin skrev den 20/2/15 12:55:
> Hi all,
>
> Please review this small fix to an issue introduced by JDK-8061802.
>
> The API in the SA is pretty strange, but a "Field" object basically only encodes
> the type and offset of a non-static field, so to get what the field points to
> you must supply "this.addr", which is the base address of the containing object.
>
> An alternate fix could have been to call getAddress(addr), but a quick look at
> the other usages of AddressField seems to suggest that getValue(addr) is the
> preferred way.
>
> Webrev: http://cr.openjdk.java.net/~mgerdin/8073532/webrev.0/
> Bug: https://bugs.openjdk.java.net/browse/JDK-8073532
>
> Testing:
> Ran jdk/test/sun/tools/jmap/heapconfig/JMapHeapConfigTest.java with
> -XX:+UseSerialGC before/after fix.
> Ran "jmap -heap" and inspected the output to verify that the correct output is
> produced with the fix applied:
> == Before fix ==
> Heap Usage:
> Exception in thread "main" java.lang.reflect.InvocationTargetException
>          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>          at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>          at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
>          at java.lang.reflect.Method.invoke(Method.java:498)
>          at sun.tools.jmap.JMap.runTool(JMap.java:201)
>          at sun.tools.jmap.JMap.main(JMap.java:130)
> Caused by: sun.jvm.hotspot.types.WrongTypeException
>          at sun.jvm.hotspot.types.basic.BasicField.getAddress(BasicField.java:246)
>          at
> sun.jvm.hotspot.types.basic.BasicFieldWrapper.getAddress(BasicFieldWrapper.java:131)
>
>          at
> sun.jvm.hotspot.memory.GenCollectedHeap.getGen(GenCollectedHeap.java:79)
>          at sun.jvm.hotspot.tools.HeapSummary.run(HeapSummary.java:89)
>          at sun.jvm.hotspot.tools.Tool.startInternal(Tool.java:260)
>          at sun.jvm.hotspot.tools.Tool.start(Tool.java:223)
>          at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
>          at sun.jvm.hotspot.tools.HeapSummary.main(HeapSummary.java:49)
>          ... 6 more
>
> == With fix ==
> Heap Usage:
> New Generation (Eden + 1 Survivor Space):
>     capacity = 157941760 (150.625MB)
>     used     = 14044472 (13.393852233886719MB)
>     free     = 143897288 (137.23114776611328MB)
>     8.892184055692427% used
> Eden Space:
>     capacity = 140443648 (133.9375MB)
>     used     = 14044472 (13.393852233886719MB)
>     free     = 126399176 (120.54364776611328MB)
>     10.000076329546781% used
>  From Space:
>     capacity = 17498112 (16.6875MB)
>     used     = 0 (0.0MB)
>     free     = 17498112 (16.6875MB)
>     0.0% used
> To Space:
>     capacity = 17498112 (16.6875MB)
>     used     = 0 (0.0MB)
>     free     = 17498112 (16.6875MB)
>     0.0% used
> tenured generation:
>     capacity = 350945280 (334.6875MB)
>     used     = 0 (0.0MB)
>     free     = 350945280 (334.6875MB)
>     0.0% used
>
> /Mikael


More information about the hotspot-gc-dev mailing list