RFR: JDK-8068589: GCCause should distinguish jcmd GC.run from System.gc()

Kirk Pepperdine kirk at kodewerk.com
Mon Jan 26 10:07:09 UTC 2015


Hi Staffan,

There are other entry points in diagnosticCommand that will trigger a Full GC.

void ClassHistogramDCmd::execute(DCmdSource source, TRAPS) {
  VM_GC_HeapInspection heapop(output(),
                              !_all.value() /* request full gc if false */);
  VMThread::execute(&heapop);
}

and
void HeapDumpDCmd::execute(DCmdSource source, TRAPS) {
  // Request a full GC before heap dump if _all is false
  // This helps reduces the amount of unreachable objects in the dump
  // and makes it easier to browse.
  HeapDumper dumper(!_all.value() /* request GC if _all is false*/);
  int res = dumper.dump(_filename.value());
  if (res == 0) {
    output()->print_cr("Heap dump file created");
  } else {
    // heap dump failed
    ResourceMark rm;
    char* error = dumper.error_as_C_string();
    if (error == NULL) {
      output()->print_cr("Dump failed - reason unknown");
    } else {
      output()->print_cr("%s", error);
    }
  }
}

For example. For consistency, how would you suggest these be handled.

Kind regards,
Kirk Pepperdine

On Jan 26, 2015, at 9:12 AM, Staffan Larsen <staffan.larsen at oracle.com> wrote:

> 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.
> 
> Thanks,
> /Staffan
> 
>> On 25 jan 2015, at 14:15, Yasumasa Suenaga <yasuenag at gmail.com> wrote:
>> 
>> Hi all,
>> 
>> GCCause which is printed in gc log is "System.gc()" when jcmd GC.run is invoked. 
>> I think that GCCause which is caused by jcmd GC.run should be different from System.gc() . 
>> 
>> I uploaded webrev for this enhancement:
>> http://cr.openjdk.java.net/~ysuenaga/JDK-8068589/webrev.00/
>> 
>> This patch prints "jcmd GC.run" to gc log when jcmd GC.run is invoked. 
>> 
>> 
>> Could you review it?
>> 
>> 
>> Thanks,
>> 
>> Yasumasa
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20150126/9410ea07/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 496 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20150126/9410ea07/signature.asc>


More information about the hotspot-gc-dev mailing list