Starting with Strategy Secure Enterprise 2019, there is a new feature enabled by default for Intelligence Server. This feature allows Intelligence Server to release the block cache memory in SmartHeap when Intelligence Server is about to hit Memory Contract Denial.
SmartHeap, the memory allocator used in Strategy Intelligence Server, will cache some memory just released, to improve performance. The cache in SmartHeap can be:
The cache that will be released by this feature includes the block cache for big memory blocks, but not includes the free page cache for small and medium blocks.
When Memory Contract Manager checks the size for the memory request, if the size is larger than the total available memory (counter in Memory Contract Manager) plus a fixed threshold as safe margin, the releasing of SmartHeap block cache will be triggered. The condition is as below:
RequestSize > TotalAvaiblableMemory - SafeMargin
SmartHeap will then try to release at least with Size of 2 * (RequestSize - ( TotalAvaiblableMemory - SafeMargin) ). The releasing order will start from largest memory blocks to smaller one, but it will keep no less than 1 GB block cache in SmartHeap.
The SafeMargin is set to 5% of the system total RAM by default, and it can be tuned through a system environment variable.
On Linux:
export MSTR_MEM_CACHE_SAFE_MARGIN=5

Disable this feature by setting the system environment variable "MSTR_MEM_CACHE_RELEASABLE" to 0.
On Linux:
export MSTR_MEM_CACHE_RELEASABLE=0

Refer to Technical Document below for more details of SmartHeap:
KB16977: What is SmartHeap and how does it work with the MicroStrategy Intelligence Server?
Refer to Technical Document below for more details of
KB13315: Overview of the Memory Contract Manager (MCM) behavior in MicroStrategy Intelligence Server Universal 9.4.x-10.x