Как получить общий объем оперативной памяти устройства?

Я хочу получить полный объем оперативной памяти устройства. memoryInfo.getTotalPss() возвращает 0. Не существует функции для получения общего объема оперативной памяти в ActivityManager.MemoryInfo .

Как это сделать?

Стандартная команда unix: $ cat /proc/meminfo

Обратите внимание, что /proc/meminfo – это файл. На самом деле вам не нужно запускать cat , вы можете просто прочитать файл.

Начиная с уровня API 16 теперь можно использовать свойство totalMem classа totalMem .

Как это:

 ActivityManager actManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo(); actManager.getMemoryInfo(memInfo); long totalMemory = memInfo.totalMem; 

Уровень Api 15 и ниже все еще требует использования команды unix, как показано в ответе cweiske .

Я могу получить полезную RAM-память таким образом

 public String getTotalRAM() { RandomAccessFile reader = null; String load = null; DecimalFormat twoDecimalForm = new DecimalFormat("#.##"); double totRam = 0; String lastValue = ""; try { reader = new RandomAccessFile("/proc/meminfo", "r"); load = reader.readLine(); // Get the Number value from the string Pattern p = Pattern.compile("(\\d+)"); Matcher m = p.matcher(load); String value = ""; while (m.find()) { value = m.group(1); // System.out.println("Ram : " + value); } reader.close(); totRam = Double.parseDouble(value); // totRam = totRam / 1024; double mb = totRam / 1024.0; double gb = totRam / 1048576.0; double tb = totRam / 1073741824.0; if (tb > 1) { lastValue = twoDecimalForm.format(tb).concat(" TB"); } else if (gb > 1) { lastValue = twoDecimalForm.format(gb).concat(" GB"); } else if (mb > 1) { lastValue = twoDecimalForm.format(mb).concat(" MB"); } else { lastValue = twoDecimalForm.format(totRam).concat(" KB"); } } catch (IOException ex) { ex.printStackTrace(); } finally { // Streams.close(reader); } return lastValue; } 

Протестировано Upto Android 4.3: SAMSUNG S3

Вы можете получить общий объем оперативной памяти, используя этот код:

  var activityManager = GetSystemService (Activity.ActivityService) как ActivityManager;
 var memoryInfo = new ActivityManager.MemoryInfo ();
 activityManager.GetMemoryInfo (memoryInfo);

 var totalRam = memoryInfo.TotalMem / (1024 * 1024); 

Если устройство имеет 1 ГБ оперативной памяти, totalRam будет 1000.

  • Есть ли причина не использовать целые типы фиксированной ширины (например, uint8_t)?
  • Может кто-нибудь объяснить этот код шаблона, который дает мне размер массива?
  • Размер пустых пакетов UDP и TCP?
  • В C, почему sizeof (char) 1, когда 'a' является int?
  • Почему имена таблиц / столбцов / индексов Oracle ограничены 30 символами?
  • Масштабируйте ImageIcon автоматически до размера метки
  • Можете ли вы resize массива C ++ после инициализации?
  • Проверка размера объекта в Objective-C
  • Почему расчетная ширина и высота в пикселе строки в Tkinter различаются между платформами?
  • resize массива
  • Как узнать размер сеанса в ASP.NET из веб-приложения?
  • Давайте будем гением компьютера.