You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Francesco Nigro (Jira)" <ji...@apache.org> on 2021/08/25 13:20:00 UTC

[jira] [Updated] (ARTEMIS-3444) Paging cache entries are not evicted although eligible for GC

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

Francesco Nigro updated ARTEMIS-3444:
-------------------------------------
    Description: 
Artemis Paging cache is using SoftValueLongObjectHashMap to collect page cache entries.

Soft references become eligible to be collected by JVM according to -XX:SoftRefLRUPolicyMSPerMB configuration and it affects when broker can remove such entries from the mentioned SoftValueLongObjectHashMap too.

The mechanism that allow broker to remove any pending memory is by processing the ref queue filled by the JVM, but it is triggered just if there's any interaction with the page cache (size/put/remove/get/iteration), meaning that if there are no interactions, the broker won't remove such entries and the related reference queue will grow larger and larger, leading to huge GC reference processing pauses.

The paging cache should be able to remove such entries as soon as the JVM enqueue them on the map ref queue, instead.



  was:
Artemis Paging cache is using SoftValueLongObjectHashMap to collect page cache entries.

Soft references become eligible to be collected by JVM according to -XX:SoftRefLRUPolicyMSPerMB configuration and it affects when broker can remove such entries from the mentioned SoftValueLongObjectHashMap too.

The mechanism that allow broker to remove any pending memory is by processing the ref queue filled by the JVM, but it's going to happen only if there's any interaction with the page cache (size/put/remove/get/iteration), and that means that if there are no interactions, the broker won't remove such entries and the related reference queue will grow larger and larger, leading to huge GC reference processing pauses.

The paging cache should be able to remove such entries as soon as the JVM enqueue them on the map ref queue, instead.




> Paging cache entries are not evicted although eligible for GC
> -------------------------------------------------------------
>
>                 Key: ARTEMIS-3444
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-3444
>             Project: ActiveMQ Artemis
>          Issue Type: Improvement
>            Reporter: Francesco Nigro
>            Assignee: Francesco Nigro
>            Priority: Minor
>
> Artemis Paging cache is using SoftValueLongObjectHashMap to collect page cache entries.
> Soft references become eligible to be collected by JVM according to -XX:SoftRefLRUPolicyMSPerMB configuration and it affects when broker can remove such entries from the mentioned SoftValueLongObjectHashMap too.
> The mechanism that allow broker to remove any pending memory is by processing the ref queue filled by the JVM, but it is triggered just if there's any interaction with the page cache (size/put/remove/get/iteration), meaning that if there are no interactions, the broker won't remove such entries and the related reference queue will grow larger and larger, leading to huge GC reference processing pauses.
> The paging cache should be able to remove such entries as soon as the JVM enqueue them on the map ref queue, instead.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)