<div dir="ltr">Many thanks, I just want to say this is an amazing place. </div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Aug 23, 2013 at 4:34 PM, 云达(Yunda) <span dir="ltr">&lt;<a href="mailto:yunda.mly@taobao.com" target="_blank">yunda.mly@taobao.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="ZH-CN" link="blue" vlink="purple"><div><p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Xu,<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Actually the heap dump records the address of each object(The structure of heap dump is described in share/vm/services/heapDumper.cpp and object ID of an object is its address). So you can write a program to analyze the heap dump on your own to get the heap location of each object. <u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">As for the address information generated by +PrintGCDetails, the three addresses of a generation are low boundary address, high address and high boundary address. High address is the current end address and high boundary address is the maximum address the generation can expand to, so the “total” of a generation is high address minus low boundary address. While the three addresses of a space are bottom address, top address and end address, and the size of a space is end address minus bottom address and the used size is top address minus bottom address. If there are four addresses of a space, the third one is used by the OffsetTable which I think you can just ignore.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d">Yunda<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:10.5pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:#1f497d"><u></u> <u></u></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt"><div><div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0cm 0cm 0cm"><p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"> <a href="mailto:hotspot-gc-dev-bounces@openjdk.java.net" target="_blank">hotspot-gc-dev-bounces@openjdk.java.net</a> [mailto:<a href="mailto:hotspot-gc-dev-bounces@openjdk.java.net" target="_blank">hotspot-gc-dev-bounces@openjdk.java.net</a>] <b>On Behalf Of </b>Lijie Xu<br>
<b>Sent:</b> Friday, August 23, 2013 9:46 AM<br><b>To:</b> <a href="mailto:hotspot-gc-dev@openjdk.java.net" target="_blank">hotspot-gc-dev@openjdk.java.net</a><br><b>Subject:</b> How to identify individual object&#39;s location in JVM heap space<u></u><u></u></span></p>
</div></div><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p><div><div class="im"><p class="MsoNormal"><span lang="EN-US">Hi, all. With the help of jmap or other tools, we can dump heap objects at a specific time. Then we can find out both the number and size of the individual object.<u></u><u></u></span></p>
<div><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span lang="EN-US">At this point, I would like to know the heap location (Eden, S0/S1, or Old) of each object. But I cannot find any related information in the heap dump. How to identify? I really need this information in my project.<u></u><u></u></span></p>
</div><div><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p></div><div><p class="MsoNormal"><span lang="EN-US">I think there is a way to know the address of each object and address boundary of each space, since GC algorithms have methods to scan objects in a specific space.<u></u><u></u></span></p>
</div><div><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p></div></div><div><p class="MsoNormal"><span lang="EN-US">I also noticed that there are some <span style="color:#1f497d">A</span> about each space. For example,<u></u><u></u></span></p>
</div><div class="im"><div><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p></div><div><div><p class="MsoNormal"><span lang="EN-US">Heap<u></u><u></u></span></p></div><div><p class="MsoNormal"><span lang="EN-US"> def new generation   total 153600K, used 152935K [0x14710000, 0x1edb0000, 0x1edb0000)<u></u><u></u></span></p>
</div><div><p class="MsoNormal"><span lang="EN-US">  eden space 136576K, 100% used [0x14710000, 0x1cc70000, 0x1cc70000)<u></u><u></u></span></p></div><div><p class="MsoNormal"><span lang="EN-US">  from space 17024K,  96% used [0x1dd10000, 0x1ed09f60, 0x1edb0000)<u></u><u></u></span></p>
</div><div><p class="MsoNormal"><span lang="EN-US">  to   space 17024K,   0% used [0x1cc70000, 0x1cc70000, 0x1dd10000)<u></u><u></u></span></p></div><div><p class="MsoNormal"><span lang="EN-US"> tenured generation   total 341376K, used 341220K [0x1edb0000, 0x33b10000, 0x33b10000)<u></u><u></u></span></p>
</div><div><p class="MsoNormal"><span lang="EN-US">   the space 341376K,  99% used [0x1edb0000, 0x33ae9160, 0x33ae9200, 0x33b10000)<u></u><u></u></span></p></div><div><p class="MsoNormal"><span lang="EN-US"> compacting perm gen  total 12288K, used 188K [0x33b10000, 0x34710000, 0x37b10000)<u></u><u></u></span></p>
</div><div><p class="MsoNormal"><span lang="EN-US">   the space 12288K,   1% used [0x33b10000, 0x33b3f2c0, 0x33b3f400, 0x34710000)<u></u><u></u></span></p></div><div><p class="MsoNormal"><span lang="EN-US">    ro space 10240K,  42% used [0x37b10000, 0x37f50348, 0x37f50400, 0x38510000)<u></u><u></u></span></p>
</div><div><p class="MsoNormal"><span lang="EN-US">    rw space 12288K,  54% used [0x38510000, 0x38b906f0, 0x38b90800, 0x39110000)<u></u><u></u></span></p></div></div><div><p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
</div><div><p class="MsoNormal"><span lang="EN-US">What&#39;s the exact meaning of these multiple address?<u></u><u></u></span></p></div></div></div></div></div></div></blockquote></div><br></div>