How to get reference processing logging?

Marcus Larsson marcus.larsson at
Wed Dec 7 14:34:06 UTC 2016


On 12/07/2016 01:20 PM, Thomas Schatzl wrote:
> Hi,
> On Wed, 2016-12-07 at 11:26 +0000, Andrew Haley wrote:
>> On 07/12/16 11:15, Thomas Schatzl wrote:
>>> Hi,
>>> On Wed, 2016-12-07 at 11:08 +0000, Andrew Haley wrote:
>>>> I've tried "-Xlog:gc::ref" and "-Xlog:gc=ref" but neither works.
>>> "-Xlog:gc+ref=debug"
>>>> I want to see this output:
>>>>    log_debug(gc, ref)("Ref Counts: Soft: " SIZE_FORMAT " Weak: "
>>>> SIZE_FORMAT " Final: " SIZE_FORMAT " Phantom: " SIZE_FORMAT,
>>>>                       stats.soft_count(), stats.weak_count(),
>>>> stats.final_count(), stats.phantom_count());
>>>>    log_develop_trace(gc, ref)("JNI Weak Reference count: "
>>>> SIZE_FORMAT, count_jni_refs());
>>>> I tried -Xlog:help and searc hed on the web for information about
>>>> the
>>>> -Xlog syntax, but no luck.
>>> -Xlog:help gives a pretty comprehensive output with BNF syntax
>>> description here. It also includes a lot of examples.
>> Perhaps, but none of the examples actually contain "+".
> contains even more comprehensive
> examples :)
> I filed JDK-8170855, you are right.

Good point! We should have that as an example.

>>> Particularly the sentence below the BNF string gives an explanation
>>> of "what" should be.
>>> Maybe you have some suggestions to improve the text?
>> Indeed I do.  An example which contains the crucial "+" would be a
>> start.
>> Like this:
>> -Xlog:gc+ref=debug
>> 	 Log messages tagged with 'gc' and 'ref' tags using 'debug'
>> level to stdout, with default decorations.
>> The crucial I didn't realize was that in
>>    log_debug(gc, ref)
>> both "gc" and "ref" are tags.  It's not obvious, but I suppose if I'd
>> studied the way the logging framework is called it would have been
>> clearer.  Nonethless, you shouldn't have to be a developer who knows
>> the logging API just in order to get some log output, and the syntax
>> is very obscure.
> I think in this case looking at the use in the sources maybe
> contributed to the confusion. I.e. you might come to the conclusion
> that "gc" is not a tag?
> The usage string seems clear in that "what" is "... a combination of
> tags and levels on [I think this is a typo] the form
> tag1[+tag2][*]=level", with a set of available tags further below.
>> Is this stuff documented anywhere?
> Somebody from the serviceability team can probably tell you more about
> the location of a official documentation.

The UL JEP is probably the best documentation ATM. There will be a 
section for the new framework in the docs for JDK 9, but I don't think 
there's any preview of that available right now.

> As for documentation of the various tags, and what they print in
> particular, I do not think there is one (apart from the sources). Maybe
> somebody else can give you more insights.

Tags are typically too general by themselves to have a description. 
What's interesting is the combination of tags.

> My suggestion is to start off with e.g. gc*=debug/all=debug and from
> that create a set of messages you need (or if you are a dev look at the
> source code for the message you want).



> Thanks,
>    Thomas

More information about the hotspot-dev mailing list