Skip to main content

memory_info 0.1.0 copy "memory_info: ^0.1.0" to clipboard
memory_info: ^0.1.0 copied to clipboard

Flutter package to get device memory info(ram&rom) at android/ios devices

memory_info #

Flutter plugin to get device memory (RAM) and disk space (ROM) info on Android and iOS.

Requirements #

Minimum
Flutter 3.44
Android API 21
iOS 13.0

Supports Swift Package Manager and CocoaPods on iOS, and AGP 9 / built-in Kotlin on Android.

Installation #

dependencies:
  memory_info: ^0.1.0

Usage #

import 'package:memory_info/memory_info.dart';

final Memory memory = await MemoryInfoPlugin().memoryInfo;
print('Used by app: ${memory.appMem} MB');
print('Total: ${memory.totalMem} MB');
print('Free: ${memory.freeMem} MB');
print('Available to app: ${memory.appAvailableMem} MB'); // iOS only
print('Low memory: ${memory.lowMemory}');

final DiskSpace disk = await MemoryInfoPlugin().diskSpace;
print('Disk free: ${disk.freeSpace} MB');
print('Disk total: ${disk.totalSpace} MB');
print('Disk used: ${disk.usedSpace} MB');

Memory pressure #

Listen to the system memory pressure events to release caches before the app gets killed:

final subscription = MemoryInfoPlugin().onMemoryPressure.listen((event) {
  switch (event.level) {
    case MemoryPressureLevel.warning:
    case MemoryPressureLevel.critical:
      imageCache.clear();
    case MemoryPressureLevel.background:
      break;
  }
});

// Later
subscription.cancel();
Level Android iOS
warning TRIM_MEMORY_RUNNING_MODERATE, TRIM_MEMORY_RUNNING_LOW didReceiveMemoryWarningNotification
critical TRIM_MEMORY_RUNNING_CRITICAL, onLowMemory Critical memory pressure (DispatchSource)
background TRIM_MEMORY_UI_HIDDEN, TRIM_MEMORY_BACKGROUND, TRIM_MEMORY_MODERATE, TRIM_MEMORY_COMPLETE —

On Android, event.androidTrimLevel holds the raw trim level. Since Android 14 the system only sends TRIM_MEMORY_UI_HIDDEN and TRIM_MEMORY_BACKGROUND, so warning and critical are rare there.

Values #

All sizes are in megabytes. A value is null when the platform can't provide it.

Memory #

Field Android iOS
appMem Total PSS of the app process (Debug.MemoryInfo) App memory footprint (phys_footprint)
totalMem ActivityManager.MemoryInfo.totalMem ProcessInfo.physicalMemory
freeMem ActivityManager.MemoryInfo.availMem Free pages system-wide (host_statistics64)
lowMemory ActivityManager.MemoryInfo.lowMemory true when appAvailableMem is below 25% of the app memory limit
appAvailableMem null Memory the app can still allocate before hitting its limit (os_proc_available_memory)
lowMemoryThreshold ActivityManager.MemoryInfo.threshold null
advertisedMem ActivityManager.MemoryInfo.advertisedMem (Android 14+) null
javaHeapUsedMem Runtime.totalMemory - Runtime.freeMemory null
javaHeapMaxMem Runtime.maxMemory null

On iOS, freeMem only counts completely unused pages. iOS keeps this number low on purpose, so use appAvailableMem to check how close the app is to being terminated for memory.

On the iOS simulator, appAvailableMem and lowMemory are null, because the simulator has no app memory limit.

DiskSpace #

Field Android iOS
freeSpace StorageManager.getAllocatableBytes (Android 8+), StatFs before volumeAvailableCapacityForImportantUsage
totalSpace Total size of the data partition (StatFs) volumeTotalCapacity
usedSpace totalSpace - freeSpace totalSpace - freeSpace

freeSpace includes cached data the system can clear when space is needed.

iOS privacy manifest #

The plugin ships a PrivacyInfo.xcprivacy declaring its use of the disk space API, so no extra setup is needed.

License #

MIT

21
likes
160
points
31.9k
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Flutter package to get device memory info(ram&rom) at android/ios devices

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter, memory_info_platform_interface

More

Packages that depend on memory_info

Packages that implement memory_info