内存大小的获取

 private String getMemoryInfo() {
    StringBuilder sb = new StringBuilder();

    Runtime runtime = Runtime.getRuntime();
    //返回【Java虚拟机】的最大内存:从系统可挖最大内存
    sb.append("本应用maxMemory======>")
            .append(runtime.maxMemory() / 1024 / 1024).append("Mb").append("\n");
    //返回【Java虚拟机】的内存总量:从系统已挖的总内存
    sb.append("本应用totalMemory======>")
            .append(runtime.totalMemory() / 1024 / 1024).append("Mb").append("\n");
    //返回【Java虚拟机】中可用内存的数量:从系统已挖但还没用的内存
    sb.append("本应用freeMemory======>")
            .append(runtime.freeMemory() / 1024 / 1024).append("Mb").append("\n");
    sb.append("本应用 当前使用======>")
            .append((runtime.totalMemory() - runtime.freeMemory()) / 1024 / 1024)
            .append("Mb").append("\n");


    //adb shell cat /proc/meminfo 命令行可直接获取
    ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
    activityManager.getMemoryInfo(memoryInfo);
    //【系统内核】上可用的内存
    sb.append("系统availMem======>")
            .append(memoryInfo.availMem / 1024 / 1024).append("Mb").append("\n");
    //【系统内核】可访问的总内存
    sb.append("系统totalMem======>")
            .append(memoryInfo.totalMem / 1024 / 1024).append("Mb").append("\n");
    //如果系统认为自己当前处于低内存,则设置为true
    sb.append("系统lowMemory======>")
            .append(memoryInfo.lowMemory).append("\n");
    return sb.toString();
}

demo

public class MainActivity extends AppCompatActivity {

    private static final String TAG = MainActivity.class.getSimpleName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        TextView textView = (TextView) this.findViewById(R.id.tv);
        CountDownTimer countDownTimer = new CountDownTimer( 60 * 60 * 1000L, 1000L) {
            @Override
            public void onTick(long millisUntilFinished) {
                String memoryInfo = getMemoryInfo();
                textView.setText(memoryInfo);
            }

            @Override
            public void onFinish() {
                String memoryInfo = getMemoryInfo();
                Log.e(TAG, "onFinish: memoryInfo===> " + memoryInfo);
            }
        };
        countDownTimer.start();
    }

    private String getMemoryInfo() {
        StringBuilder sb = new StringBuilder();

        Runtime runtime = Runtime.getRuntime();
        //返回【Java虚拟机】的最大内存:从系统可挖最大内存
        sb.append("本应用maxMemory======>")
                .append(runtime.maxMemory() / 1024 / 1024).append("Mb").append("\n");
        //返回【Java虚拟机】的内存总量:从系统已挖的总内存
        sb.append("本应用totalMemory======>")
                .append(runtime.totalMemory() / 1024 / 1024).append("Mb").append("\n");
        //返回【Java虚拟机】中可用内存的数量:从系统已挖但还没用的内存
        sb.append("本应用freeMemory======>")
                .append(runtime.freeMemory() / 1024 / 1024).append("Mb").append("\n");
        sb.append("本应用 当前使用======>")
                .append((runtime.totalMemory() - runtime.freeMemory()) / 1024 / 1024)
                .append("Mb").append("\n");


        //adb shell cat /proc/meminfo 命令行可直接获取
        ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
        ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
        activityManager.getMemoryInfo(memoryInfo);
        //【系统内核】上可用的内存
        sb.append("系统availMem======>")
                .append(memoryInfo.availMem / 1024 / 1024).append("Mb").append("\n");
        //【系统内核】可访问的总内存
        sb.append("系统totalMem======>")
                .append(memoryInfo.totalMem / 1024 / 1024).append("Mb").append("\n");
        //如果系统认为自己当前处于低内存,则设置为true
        sb.append("系统lowMemory======>")
                .append(memoryInfo.lowMemory).append("\n");
        return sb.toString();
    }

}

Runtime方式

/**
 * App内存
 */
private fun getAppMemoryInfo() {
    val runtime = Runtime.getRuntime()
    //返回的空闲内存在Java虚拟机的数量。 调用gc方法可能会导致增加返回的值freeMemory.
    println(
        "freeMemory================================" +
                runtime.freeMemory() / 1024 / 1024
    )
    //返回的内存在Java虚拟机的总量。 通过该方法返回的值可以随时间,这取决于宿主环境而异。
    //请注意,存储量需要保持任何给定类型的对象可以是依赖于实现的。
    println(
        "totalMemory================================" +
                runtime.totalMemory() / 1024 / 1024
    )
    //返回Java虚拟机将尝试使用的最大内存量。 如果没有内在的限制,则该值Long.MAX_VALUE将被退回。
    println(
        "maxMemory================================" +
                runtime.maxMemory() / 1024 / 1024
    )
}

ActivityManager方式

/**
 * RAM内存
 */
private fun getRAMMemoryInfo() {
    val activityManager =
        this.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
    val memoryInfo = ActivityManager.MemoryInfo()
    activityManager.getMemoryInfo(memoryInfo)

    //内核访问的内存总量。
    // 这基本上是该装置的RAM大小,不包括下面内核固定分配等的DMA缓冲器,RAM用于将基带CPU等
    println("totalMem================================" + memoryInfo.totalMem / 1024 / 1024)
    //系统上的可用内存。 这个数字不应该被认为是绝对的:
    // 由于内核的性质,这种内存的显著部分实际上是在使用中,需要对整个系统运行良好。
    println("availMem================================" + memoryInfo.availMem / 1024 / 1024)
    //如果系统认为自己目前处于低内存情况下设置为true。
    println("lowMemory================================" + memoryInfo.lowMemory)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值