It is good to know Log4J is planning to use StackWalker.

Thanks for the feedback.  I will reconsider.

One thing to mention is the patch went in jdk9/hs-rt that will show up in 
jdk9/dev some time that changes the implementation to create StackTraceElement 
to get filename and line number.  The object allocation should be cheap that 
does create short-lived objects.  The main motivation of JDK-8153123 was to 
simplify the hotspot implementation that the runtime team had concern about. 
There is an open issue to follow up the performance (JDK-8153683).  It’d be 
helpful to get your feedback on using StackWalker API and the performance data.

Mandy

> On Apr 13, 2016, at 6:51 AM, Ralph Goers <ralph.go...@dslextreme.com> wrote:
> 
> I had planned on using StackWalker to generate the location information for 
> every logging event. It seems that this change would thus cause the creation 
> of a new StackTraceElement for every logger event. That seems wasteful. Log4j 
> is currently in the process of trying to reduce the number of objects that 
> are created while logging as it has a significant impact on garbage 
> collection. So I am also in favor of getting the filename and line number 
> directly from the StackFrame.
> 
> Ralph
> 
>> On Apr 12, 2016, at 5:15 PM, Mandy Chung <mandy.ch...@oracle.com> wrote:
>> 
>> 
>>> On Apr 12, 2016, at 1:34 AM, Rémi Forax <fo...@univ-mlv.fr> wrote:
>>> 
>>> Hi Mandy,
>>> I really don't like this patch.
>>> 
>>> Being forced to call toStackElement to get the line number is counter 
>>> intuitive.
>>> I would prefer the two methods to not return Optional but an int and a 
>>> String with the same convention as StackElement if the point of this patch 
>>> is to remove the dependency to Optional. 
>>> 
>> 
>> I was expecting the common usage of StackWalker API does not need file name 
>> and line number.  I think it'd be useful to include StackFrame::getBci (in 
>> the future it might include live information like locals etc) and keep the 
>> optional stuff and uncommon usage to StackTraceElement.
>> 
>> Mandy
>> 
>> 
>>> Rémi
>>> 
>>> 
>>> Le 11 avril 2016 23:22:39 CEST, Mandy Chung <mandy.ch...@oracle.com> a 
>>> écrit :
>>>> Webrev at:
>>>> http://cr.openjdk.java.net/~mchung/jdk9/webrevs/8153912/webrev.00/index.html
>>>> 
>>>> StackFrame::getFileName and StackFrame::getLineNumber are originally
>>>> proposed with the view of any stack walking code can migrate to the
>>>> StackWalker API without the use of StackTraceElement. 
>>>> 
>>>> File name and line number are useful for debugging and troubleshooting
>>>> purpose. It has additional overhead to map from a method and BCI to
>>>> look up the file name and line number. 
>>>> 
>>>> StackFrame::toStackTraceElement method returns StackTraceElement that
>>>> includes the file name and line number. There is no particular benefit
>>>> to duplicate getFileName and getLineNumber methods in StackFrame. It is
>>>> equivalently convenient to call
>>>> StackFrame.toStackTraceElement().getFileName() (or getLineNumber). 
>>>> 
>>>> This patch proposes to remove StackFrame::getFileName and
>>>> StackFrame::getLineNumber methods since such information can be
>>>> obtained from StackFrame.toStackTraceElement().
>>>> 
>>>> Mandy
>>> 
>> 
>> 
> 
> 

Reply via email to