内存大小的获取

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)
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章