[ 
https://issues.apache.org/jira/browse/QPID-7830?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16220081#comment-16220081
 ] 

Lorenz Quack commented on QPID-7830:
------------------------------------

All this sounds awfully complicated.
What is wrong with something simpler like using a static class in broker-core 
{{StringCache}} that uses a [guava 
cache|https://github.com/google/guava/wiki/CachesExplained] with a [size 
limit|https://github.com/google/guava/wiki/CachesExplained#size-based-eviction] 
and [time based 
eviction|https://github.com/google/guava/wiki/CachesExplained#timed-eviction]? 
When a protocol layer then needs a String which we know might be repetitive 
(like the cases mentioned above) it calls {{StringCache#getString()}} and guava 
takes care of the rest.
This might be a naive approach but I would like to at least discuss why it is 
not sufficient?

> Heap dominated by duplicates of common routing values / header values etc
> -------------------------------------------------------------------------
>
>                 Key: QPID-7830
>                 URL: https://issues.apache.org/jira/browse/QPID-7830
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>            Reporter: Keith Wall
>             Fix For: Future
>
>
> When used for store and forwarding, in some use cases the Broker's heap can 
> become dominated by duplicates of common values such as routing information 
> (e.g. {{amq.direct}} or an application's queue name) or common header values 
> (e.g a application/octet-stream or an application's user id).
> On the 0-8..0-91 paths, every enqueued message gets its own 
> {{MessagePublishInfo}} referencing its own {{AMQShortString}} exchange and 
> routing keys.  For some use-cases, these are drawn from a small set. On the 
> AMQP 1.0 path, {{Properties#to}} is an example.   0-10 is probably affected 
> too.
> This unnecessarily increases the heap requirements of the Broker.
> The Broker should adopt a sensible intern/caching policy with the same policy 
> applying regardless of whether messages follow the on-line enqueue or 
> recovery path.  Note that in AMQP 1.0, values which are {{Symbols}} have 
> their underlying String automatically interned.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to