This section describes how an application can request for free RAM synchronously.
Perform the steps described in Allowing Large Memory Allocation.
Requesting free RAM synchronously is easy to implement because no active object is needed and is recommended when there is no need to perform any other task while waiting for the request to complete. This approach is not recommended in case of a server, as synchronous call blocks the server and it cannot serve its clients during synchronous wait.
User::LeaveIfError(iOomMonitorSession.RequestFreeMemory(KLargeValueToAllocate)); DoFunctionRequiring_KLargeValueToAllocate_Bytes();
The following code snippet illustrates an synchronous request for 2MB RAM:
TInt KLargeValueToAllocate = 2097152; //2MB // Create an OOM Monitor session ROomMonitorSession oomMonitorSession; CleanUpClosePushL(oomMonitorSession); User::LeaveIfError(oomMonitorSession.Connect()); // Request free memory User::LeaveIfError(iOomMonitorSession.RequestFreeMemory(KLargeValueToAllocate)); DoFunctionRequiring_KLargeValueToAllocate_Bytes(); // Tidy up CleanupStack::PopAndDestroy(); //oomMonitorSession, calls Close()