Broker 10.5 | webMethods Broker Documentation | Administering webMethods Broker | Managing Broker Servers | Broker Server Memory | Limitations of the Maximum Memory Size
 
Limitations of the Maximum Memory Size
The Broker memory limit feature monitors total memory usage for publishing operations by tracking all memory allocation calls. Using that information, the feature prevents calls for memory if the total Broker memory remaining is insufficient to service a publishing operation. However, because Broker does not track actual heap memory, there are certain circumstances under which the maximum memory limit feature may not be able to prevent the Broker from getting into an extreme out-of-memory condition and exiting.
*It is possible for the heap memory to become highly fragmented in such a way that:
amount_memory_requested < (max_memory_size) - (current_total_memory_used)
but the memory allocator is not able to find a contiguous block of memory large enough to satisfy amount_memory_requested for the publication. One way to prevent that scenario is by increasing the SafetyMargin when calculating:
MaxMemorySize = TotalMemory - (OS + OtherSoftware + BrokerProgram + SafetyMargin)
An increased SafetyMargin effectively sets aside contiguous memory chunks that can be used later to satisfy unexpectedly large publication requests. A rule of thumb is to have the SafetyMargin set at 40 to 100 percent of the MaxMemorySize.
*An incorrect TotalMemory value is used in calculating MaxMemorySize, where the TotalMemory value is larger than the actual memory available to the Broker process. This condition should be corrected by using the correct value for TotalMemory.