If you iterate by index instead of through an iterator, I don't think you
get the copy-on-write semantics.

On 26 February 2016 at 09:02, Matt Sicker <boa...@gmail.com> wrote:

> In that case, the only thing that sounds like it might be useful would be
> updating StatusLogger (unless the GC-free path requires disabling log4j's
> logging).
>
> On 25 February 2016 at 16:56, Remko Popma <remko.po...@gmail.com> wrote:
>
>> If it's a CopyOnWriteArray*List* we can iterate by index, instead of the
>> for-each loop style. However, it may be good to focus on steady state
>> application logging. For things only used during initialization there may
>> not be much benefit. The test to detect memory allocation would be really
>> useful, but I haven't had time to look at this. (If anyone wants to work on
>> that that'd be great.)
>>
>> One thing: currently StatusLogger creates special ParameterizedMessages
>> without a reference to the original parameters to prevent memory leaks. Now
>> that the formatting logic is separated out to ParameterFormatter, that can
>> be optimized to an ObjectMessage (holding a StringBuilder?). The
>> specialized ParameterizedMessage subclass can then be removed which is a
>> nice simplification.
>>
>> Sent from my iPhone
>>
>> On 2016/02/26, at 5:46, Matt Sicker <boa...@gmail.com> wrote:
>>
>> * StatusLogger (StatusListener list)
>> * LoggerContext (PropertyChangeListener list)
>> * AbstractConfiguration (ConfigurationListener list)
>> * PluginManager (String list of packages to scan)
>> * DefaultShutdownCallbackRegistry (Cancellable list)
>> * And some irrelevant usages in log4j-perf (they're intentionally using
>> CopyOnWriteArrayList/Set)
>>
>> On 25 February 2016 at 14:18, Ralph Goers <ralph.go...@dslextreme.com>
>> wrote:
>>
>>> Do you have a list?
>>>
>>> Ralph
>>>
>>> On Feb 25, 2016, at 1:07 PM, Matt Sicker <boa...@gmail.com> wrote:
>>>
>>> So far I've found a couple places we use a CopyOnWriteArrayList for
>>> listeners in StatusLogger and core.LoggerContext. I could refactor these
>>> usages to use a custom set-like class like we use for the AppenderControl
>>> set, but I don't know if it's worth it.
>>>
>>> --
>>> Matt Sicker <boa...@gmail.com>
>>>
>>>
>>>
>>
>>
>> --
>> Matt Sicker <boa...@gmail.com>
>>
>>
>
>
> --
> Matt Sicker <boa...@gmail.com>
>



-- 
Matt Sicker <boa...@gmail.com>

Reply via email to