<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hi Staffan,<div><br></div><div>There are other entry points in diagnosticCommand that will trigger a Full GC.</div><div><br></div><div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><span style="color: #bb2ca2">void</span> ClassHistogramDCmd::execute(DCmdSource source, TRAPS) {</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">  VM_GC_HeapInspection heapop(output(),</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">                              !_all.value() <span style="color: #008400">/* request full gc if false */</span>);</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">  VMThread::execute(&heapop);</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">}</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><br></div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">and</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><div style="margin: 0px;"><span style="color: #bb2ca2">void</span> HeapDumpDCmd::execute(DCmdSource source, TRAPS) {</div><div style="margin: 0px; color: rgb(0, 132, 0);"><span style="color: #000000">  </span>// Request a full GC before heap dump if _all is false</div><div style="margin: 0px; color: rgb(0, 132, 0);"><span style="color: #000000">  </span>// This helps reduces the amount of unreachable objects in the dump</div><div style="margin: 0px; color: rgb(0, 132, 0);"><span style="color: #000000">  </span>// and makes it easier to browse.</div><div style="margin: 0px;">  HeapDumper dumper(!_all.value() <span style="color: #008400">/* request GC if _all is false*/</span>);</div><div style="margin: 0px;">  <span style="color: #bb2ca2">int</span> res = dumper.dump(_filename.value());</div><div style="margin: 0px;">  <span style="color: #bb2ca2">if</span> (res == <span style="color: #272ad8">0</span>) {</div><div style="margin: 0px;">    output()->print_cr(<span style="color: #d12f1b">"Heap dump file created"</span>);</div><div style="margin: 0px;">  } <span style="color: #bb2ca2">else</span> {</div><div style="margin: 0px; color: rgb(0, 132, 0);"><span style="color: #000000">    </span>// heap dump failed</div><div style="margin: 0px;">    ResourceMark rm;</div><div style="margin: 0px;">    <span style="color: #bb2ca2">char</span>* error = dumper.error_as_C_string();</div><div style="margin: 0px;">    <span style="color: #bb2ca2">if</span> (error == <span style="color: #bb2ca2">NULL</span>) {</div><div style="margin: 0px; color: rgb(209, 47, 27);"><span style="color: #000000">      output()->print_cr(</span>"Dump failed - reason unknown"<span style="color: #000000">);</span></div><div style="margin: 0px;">    } <span style="color: #bb2ca2">else</span> {</div><div style="margin: 0px;">      output()->print_cr(<span style="color: #d12f1b">"%s"</span>, error);</div><div style="margin: 0px;">    }</div><div style="margin: 0px;">  }</div><div style="margin: 0px;">}</div><div style="margin: 0px;"><br></div><div style="margin: 0px;">For example. For consistency, how would you suggest these be handled.</div><div style="margin: 0px;"><br></div><div style="margin: 0px;">Kind regards,</div><div style="margin: 0px;">Kirk Pepperdine</div><div style="margin: 0px;"><br></div></div><div><div>On Jan 26, 2015, at 9:12 AM, Staffan Larsen <<a href="mailto:staffan.larsen@oracle.com">staffan.larsen@oracle.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">A bit of terminology here. ‘GC.run’ is called a ‘Diagnostic Command’. ‘jcmd’ is one way to invoke a Diagnostic Command. Another way is via a JMX MBean. With this in mind I think your references to ‘jcmd’ should be changed to ‘diagnostic command’ (or an abbreviation thereof). For example: _jcmd_gc_run -> _dcmd_gc_run.<br><br>Thanks,<br>/Staffan<br><br><blockquote type="cite">On 25 jan 2015, at 14:15, Yasumasa Suenaga <<a href="mailto:yasuenag@gmail.com">yasuenag@gmail.com</a>> wrote:<br><br>Hi all,<br><br>GCCause which is printed in gc log is "System.gc()" when jcmd GC.run is invoked. <br>I think that GCCause which is caused by jcmd GC.run should be different from System.gc() . <br><br>I uploaded webrev for this enhancement:<br><a href="http://cr.openjdk.java.net/~ysuenaga/JDK-8068589/webrev.00/">http://cr.openjdk.java.net/~ysuenaga/JDK-8068589/webrev.00/</a><br><br>This patch prints "jcmd GC.run" to gc log when jcmd GC.run is invoked. <br><br><br>Could you review it?<br><br><br>Thanks,<br><br>Yasumasa<br></blockquote><br></blockquote></div><br></div></body></html>