You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Volkan Yazici (Jira)" <ji...@apache.org> on 2023/11/02 17:52:00 UTC

[jira] [Assigned] (LOG4J2-3672) Avoid invoking DateFormatSymbols.getZoneStrings() in FastDateParser

     [ https://issues.apache.org/jira/browse/LOG4J2-3672?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Volkan Yazici reassigned LOG4J2-3672:
-------------------------------------

    Assignee: Volkan Yazici

> Avoid invoking DateFormatSymbols.getZoneStrings() in FastDateParser
> -------------------------------------------------------------------
>
>                 Key: LOG4J2-3672
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-3672
>             Project: Log4j 2
>          Issue Type: Bug
>            Reporter: Tristan Tarrant
>            Assignee: Volkan Yazici
>            Priority: Major
>         Attachments: stacktrace.png
>
>          Time Spent: 3.5h
>  Remaining Estimate: 0h
>
> {{FastDateParser}} uses {{DateFormatSymbols.getZoneStrings()}} to construct a table of all possible timezone names to be used in parsing date patterns in pattern layouts.
> Unfortunately the above call (and the equivalent call used by the JDK's {{SimpleDateFormat)}} causes initialization and caching of all timezones, resulting in a ~3MB heap overhead on x86_64. The following table summarizes the cost of triggering the caching of all timezones, including the number of instances of some related types and the amount of extra heap required.
>  
> || ||LocalDateTime||LocalDate||ZoneInfo||ZoneOffset||Heap delta||
> |Baseline (no TZ calls)|180|0|0| | |
> |Single timezone|180|0|0|0|298|
> |DateFormatSymbols.getZoneStrings()|57076|32212|602|1455|3760106|
> |TimeZone.getAvailableIds() + TimeZone.getName()|36678|21674|632|1155|3024946|
> |TimeZone.getAvalableIDs()|180|0|632|0|452578|
> By avoiding constructions of such tables, and relying only on {{{}FastDateParser{}}}'s support for RFC-822 and GMT-style timezone names, we can avoid allocating the extra heap.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)