Github user franz1981 commented on the issue:
https://github.com/apache/activemq-artemis/pull/2484
@michaelandrepearce Done, the PR has been sent, now we can just wait the
perf results on it :)
I have improved quite a bit the live page cache behaviour/reliability
(especially if OOME), but sadly I see that the most called method `getMessage`
cannot be improved anymore without making the lock-free code a real nightmare.
The original version was O(n) depending which message was queried, because
it needs to walk the entire linked list of paged messages.
In my version I have amortized the cost by using an interesting hybrid
between an ArrayList and a LinkedList, similar to
https://en.wikipedia.org/wiki/Unrolled_linked_list, but (very) optimized for
addition.
I'm mentioning this, because is a long time I want to design a
single-threaded version of this same data-structure to be used as the main
datastructure inside QueueImpl.
---