void MemoryPressureHandler::releaseMemory(Critical critical, Synchronous synchronous) { if (critical == Critical::Yes) releaseCriticalMemory(synchronous); releaseNoncriticalMemory(); platformReleaseMemory(critical); { ReliefLogger log("Release free FastMalloc memory"); // FastMalloc has lock-free thread specific caches that can only be cleared from the thread itself. WorkerThread::releaseFastMallocFreeMemoryInAllThreads(); #if ENABLE(ASYNC_SCROLLING) && !PLATFORM(IOS) ScrollingThread::dispatch([]() { WTF::releaseFastMallocFreeMemory(); }); #endif WTF::releaseFastMallocFreeMemory(); } #if ENABLE(RESOURCE_USAGE) Page::forEachPage([&](Page& page) { InspectorInstrumentation::didHandleMemoryPressure(page, critical); }); #endif }
void MemoryPressureHandler::releaseMemory(Critical critical, Synchronous synchronous) { if (critical == Critical::Yes) releaseCriticalMemory(synchronous); releaseNoncriticalMemory(); platformReleaseMemory(critical); { ReliefLogger log("Release free FastMalloc memory"); // FastMalloc has lock-free thread specific caches that can only be cleared from the thread itself. WorkerThread::releaseFastMallocFreeMemoryInAllThreads(); #if ENABLE(ASYNC_SCROLLING) && !PLATFORM(IOS) ScrollingThread::dispatch(WTF::releaseFastMallocFreeMemory); #endif WTF::releaseFastMallocFreeMemory(); } }