美文网首页
运行内存的获取

运行内存的获取

作者: dev晴天 | 来源:发表于2018-08-12 12:12 被阅读0次
 // 获得可用空间   (运行内存 由于可能大于2g故此处使用long)
     public static long getAvailSpace(Context context){
        // 1 获得activity管理器
        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
         //2 构建存储可用内存对象
        ActivityManager.MemoryInfo memoryInfo= new ActivityManager.MemoryInfo();
        // 给MemoryInfo对象赋值 (此处使用get进行赋值 不像以前的set进行赋值)
        am.getMemoryInfo(memoryInfo);
        // 返回可用的内存数 byte
        return memoryInfo.availMem;
    }

    // 获得总的运行内存  至少api 16才能用  此方法安卓4.1 以下不可用  不能兼容低的版本
    @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
    public static long getTotalSpace(Context context) throws IOException {
//        // 1 获得activity管理器
//        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
//        //2 构建存储可用内存对象
//        ActivityManager.MemoryInfo memoryInfo= new ActivityManager.MemoryInfo();
//        // 给MemoryInfo对象赋值 (此处使用get进行赋值 不像以前的set进行赋值)
//        am.getMemoryInfo(memoryInfo);
//        // 返回可用的内存数 byte  // 1kb = 1024 byte
//        return memoryInfo.totalMem;

        /*每款手机的内存大小都有写入文件的 可以从写入的文件中读取
        * 文件所在位置 DDMS - File Elporer-proc  meminfo文件中(内存信息)(文件第一行就是)
        * */
        FileReader fileReader=null;
        BufferedReader bufferedReader=null;
        try {
            fileReader = new FileReader("proc/meminfo");
            bufferedReader =new BufferedReader(fileReader);
            String LineOne=  bufferedReader.readLine();
            // 由于文件内容都是成行的 直接读取一行 得到的内容不能直接使用  故
            char[] chars= LineOne.toCharArray();
            //循环遍历每一个字符如果字符的ASCII值在0-9之间 说明次字符为有效字符
            StringBuffer stringBuffer = new StringBuffer();
            for(char c:chars){
                if (c>='0'&&c<='9'){
                   stringBuffer.append(c);//满足条件开始拼接
                }
            }
          return Long.parseLong(stringBuffer.toString())*1024 ;//在转换为字符串 字符串转化为数字

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //关 流
            if(fileReader!=null && bufferedReader!=null){
                try {
                    fileReader.close();
                    bufferedReader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
        return 0;
    }

相关文章

  • 运行内存的获取

  • iOS 获取设备运行内存RAM大小

    获取运行内存大小 #import - (void)getRamMemory{ mac...

  • Android开发中,获取存储信息、电量信息。

    一、获取手机的存储信息(注意是存储容量,非运行内存信息。) //获取存储信息 private String get...

  • java 反射

    1、在运行时期获取对象类型信息的操作。object.getClass() 返回此 Object 的内存中运行时类。...

  • iOS 获取设备信息

    获取iOS设备信息 获取 当前设备 可用内存 及当前 应用 所占内存 获取物理内存 获取硬盘内存 获取本地 获取网...

  • Python 反射

    概述 运行时,区别于编译时,指的是程序被加载到内存中执行的时候。反射,reflection,指的是运行时获取类型定...

  • Android procrank

    procrank是按照内存占用情况对进程进行排序。因为它需要遍历/proc下的所有进程获取内存占用情况,所以在运行...

  • Android获取当前应用的运行内存

    Android获取当前应用的运行内存 题外话,最近在给H5游戏做一个缓存的框架,有个小需求是在WebView界面上...

  • python反射

    概念 运行时: 区别于编译时,指程序被加载到内存中执行的时候. 反射(自省): 指运行时获取对象的类型信息. 具有...

  • android 日常(十)

    android系统级app获取运行中的内存这里系统级app指的是安装在system/app目录下或者system/...

网友评论

      本文标题:运行内存的获取

      本文链接:https://www.haomeiwen.com/subject/zsrsbftx.html