博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android获取总内存和可用内存
阅读量:4146 次
发布时间:2019-05-25

本文共 4329 字,大约阅读时间需要 14 分钟。

一、原理

基于 /proc/meminfo 信息读取

/* /proc/meminfo        MemTotal:        2902436 kB        MemFree:          199240 kB        MemAvailable:    1088764 kB        Buffers:           40848 kB        Cached:           862908 kB        SwapCached:        54696 kB        Active:          1222848 kB        Inactive:         671468 kB        Active(anon):     758516 kB        Inactive(anon):   242560 kB        Active(file):     464332 kB        Inactive(file):   428908 kB        Unevictable:        5972 kB        Mlocked:             256 kB        SwapTotal:       1048572 kB        SwapFree:         537124 kB        Dirty:                12 kB        Writeback:             0 kB        AnonPages:        988820 kB        Mapped:           508996 kB        Shmem:              4800 kB        Slab:             157204 kB        SReclaimable:      57364 kB        SUnreclaim:        99840 kB        KernelStack:       41376 kB        PageTables:        51820 kB        NFS_Unstable:          0 kB        Bounce:                0 kB        WritebackTmp:          0 kB        CommitLimit:     2499788 kB        Committed_AS:   76292324 kB        VmallocTotal:   258867136 kB        VmallocUsed:           0 kB        VmallocChunk:          0 kB        CmaTotal:              0 kB        CmaFree:               0 kB    */

二、代码

package com.fadisu.cpurun.util;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;public class MemInfoUtil {
public static List
getMemInfo() { List
result = new ArrayList<>(); try { String line; BufferedReader br = new BufferedReader(new FileReader("/proc/meminfo")); while ((line = br.readLine()) != null) { result.add(line); } br.close(); } catch (IOException e) { e.printStackTrace(); } return result; } /* /proc/meminfo MemTotal: 2902436 kB MemFree: 199240 kB MemAvailable: 1088764 kB Buffers: 40848 kB Cached: 862908 kB SwapCached: 54696 kB Active: 1222848 kB Inactive: 671468 kB Active(anon): 758516 kB Inactive(anon): 242560 kB Active(file): 464332 kB Inactive(file): 428908 kB Unevictable: 5972 kB Mlocked: 256 kB SwapTotal: 1048572 kB SwapFree: 537124 kB Dirty: 12 kB Writeback: 0 kB AnonPages: 988820 kB Mapped: 508996 kB Shmem: 4800 kB Slab: 157204 kB SReclaimable: 57364 kB SUnreclaim: 99840 kB KernelStack: 41376 kB PageTables: 51820 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 2499788 kB Committed_AS: 76292324 kB VmallocTotal: 258867136 kB VmallocUsed: 0 kB VmallocChunk: 0 kB CmaTotal: 0 kB CmaFree: 0 kB */ public static String getFieldFromMeminfo(String field) throws IOException { BufferedReader br = new BufferedReader(new FileReader("/proc/meminfo")); Pattern p = Pattern.compile(field + "\\s*:\\s*(.*)"); try { String line; while ((line = br.readLine()) != null) { Matcher m = p.matcher(line); if (m.matches()) { return m.group(1); } } } finally { br.close(); } return null; } public static String getMemTotal() { String result = null; try { result = getFieldFromMeminfo("MemTotal"); } catch (IOException e) { e.printStackTrace(); } return result; } public static String getMemAvailable() { String result = null; try { result = getFieldFromMeminfo("MemAvailable"); } catch (IOException e) { e.printStackTrace(); } return result; }}

三、运行结果

这里写图片描述

四、具体源码

你可能感兴趣的文章
如何防止sql注入
查看>>
springmvc传值
查看>>
在Eclipse中查看Android源码
查看>>
Android使用webservice客户端实例
查看>>
[转]C语言printf
查看>>
C 语言学习 --设置文本框内容及进制转换
查看>>
C 语言 学习---判断文本框取得的数是否是整数
查看>>
C 语言 学习---ComboBox相关、简单计算器
查看>>
C 语言 学习---ComboBox相关、简易“假”管理系统
查看>>
C 语言 学习---回调、时间定时更新程序
查看>>
C 语言 学习---复选框及列表框的使用
查看>>
第十一章 - 直接内存
查看>>
JDBC核心技术 - 上篇
查看>>
一篇搞懂Java反射机制
查看>>
Single Number II --出现一次的数(重)
查看>>
Palindrome Partitioning --回文切割 深搜(重重)
查看>>
对话周鸿袆:从程序员创业谈起
查看>>
Mysql中下划线问题
查看>>
Xcode 11 报错,提示libstdc++.6 缺失,解决方案
查看>>
idea的安装以及简单使用
查看>>