RFR: JDK-8068589: GCCause should distinguish jcmd GC.run from System.gc()
Staffan Larsen
staffan.larsen at oracle.com
Mon Jan 26 11:34:39 UTC 2015
HeapDumper uses GCCause::_heap_dump as the cause. That looks good to me.
/Staffan
> On 26 jan 2015, at 11:07, Kirk Pepperdine <kirk at kodewerk.com> wrote:
>
> 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 <mailto: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 <mailto: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/ <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: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20150126/b9484e32/attachment.htm>
More information about the hotspot-gc-dev
mailing list