首页 > 系统相关 >Android命令行查看内存情况

Android命令行查看内存情况

时间:2022-11-22 11:33:57浏览次数:42  
标签:Set dalvik 占用 bitmap 内存 命令行 Android Size


在学习如何查看内存前先来介绍几个概念
VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS

android程序内存被分为2部分:native和dalvik,dalvik就是我们平常说的java堆,我们创建的对象是在这里面分配的,而bitmap是直接在native上分配的,对于内存的限制是 native+dalvik 不能超过最大限制。android程序内存一般限制在16M,当然也有24M的。

用以下命令可以查看程序的内存使用情况:
adb shell dumpsys meminfo $package_name or $pid //使用程序的包名或者进程id

下面以我的项目com.soufun.txdai为例

Android命令行查看内存情况_共享库

我们重点看红色框出来的部分,其中size是需要的内存,而allocated是分配了的内存,对应的2列分别是native和dalvik,当总数也就是total这一列超过单个程序内存的最大限制时,OOM就很有可能会出现了。

多数时候,发生OOM 都是在做一些跟图片相关的操作,以下提出一些建议尽量可以减少这种情况的发生:

1.decode bitmap 的时候,尽量配置下Options,例如:inSameSize
2.Bitmap使用完以后,调用 bitmap.recycle()来释放内存
3.如果应用是基于图片的应用,尽量采用LazyLoad和DymanicRecycle
4.decode bitmap 的时候,将decode代码 try catch 出来,catch oom error,避免程序crash,可以在catch里面做一些释放内存操作。

接下来我们看看第二个命令showmap。查看指定pid进程的内存信息。

使用这个命令我们先要进入linux控制台

Android命令行查看内存情况_物理内存_02


标签:Set,dalvik,占用,bitmap,内存,命令行,Android,Size
From: https://blog.51cto.com/u_10847930/5877257

相关文章

  • Android实现3D页面加载进度条动画
    一.概述最近在研究公司的代码,发现每次切换页面时做的进度条效果还挺不错的,所以想深入研究一下,今天就带大家来看看到底是如何实现的,首先上效果图二.实现上面的进度条最大的......
  • Android使用MAT分析内存泄露
    一.概述首先来普及一下什么是内存泄露:内存泄露是指对象的内存在分配之后无法通过程序的执行逻辑释放对该对象的引用,导致不能回收该对象所占内存。内存泄露会导致以下情......
  • Android网络类型判断
    在Android开发中,我们有时候需要根据当前网络的类型去做一些操作,下面看看如何判断当前网络的状况:publicclassNetWorkUtil{privatestaticConnectivityManagermanage......
  • Unity :Android局域网通信、UDP广播实现控制器开关(继电器)
    要解决的问题:1.UDP广播:因为平板控制的不仅仅是继电器,还有其他电脑2.继电器接收的是16进制指令,所以要把12个按钮1-12转换成16进制,要不然一个个的发送太麻烦,这里是指令的理......
  • 内存表(FDMEMTABLE)
    内存表的优点是快,非常快,号称比BDE的clientdataset快很多。内存表不但快,还可以另存为XML、BIN、CSV等数据。也可直接作为stream传送。所以,追求速度的时候,获得数据后即解除锁......
  • [Android开发学iOS系列] TableView展现一个list
    TableView基础本文讲讲TableView的基本使用.顺便介绍一下delegation.TableView用来做什么TableView用来展示一个很长的list.和Android中的RecyclerView不同,iOS中的......
  • c++命令行传参
    intmain(intargc,char**argv)argc:命令行参数个数(ArgumentCount)argv:命令行参数向量(ArgumentVector)argv是一个字符串数组,双指针代表指向首个字符串的地址和......
  • MAC环境Android SDK环境变量配置
    打开.bash_profile文件exportANDROID_HOME=/Users/liwen/Library/Android/sdkexportPATH=${PATH}:${ANDROID_HOME}/platform-toolsexportPATH=${PATH}:${ANDROID_HOME}/t......
  • Day18.2:对象创建的内存分析图解
    对象创建的内存分析我们从两块最常用的内存空间对对象创建进行内存分析堆内存:存放的是对象的具体信息;在程序之中堆内存空间的开辟是通过new完成的栈内存:存放的是对象的......
  • Android 自定义标题栏组件
    1.绘制Layout文件首先新建一个layout文件,命名为title_bar,在里面绘制标题栏,我需要的是一个有返回键和当前页面标题的titleBar布局代码如下<?xmlversion="1.0"......