ADB命令怎样显示手机的实际内存显示与实际不符?

Android 中查看内存的使用情况集常用adb命令
1. 在IDE中查看Log信息
当程序运行垃圾回收的时候,会打印一条Log信息,其格式如下:
D/dalvikvm:
GC_Reason表示导致垃圾回收的原因以及当前的回收类型,包括以下几类:
GC_CONCURRENT:当堆中对象数量达到一定是触发的垃圾收集
GC_FOR_MALLOC:在内存已满的情况下分配内存,此时会暂停程序并回收内存
GC_HPROF_DUMP_HEAP:创建FPFOR文件来分析Heap时所造成的垃圾收集
GC_EXPLICIT: 程序调用了垃圾收集函数System.gc
GC_EXTERNAL_ALLOC: 出现在API 10及以下,为外部分配内存(native memory or NIO buffer)所造成的垃圾回收,高版本全部分配在Dalvik Heap中。
Amount_freed 表示此次回收的内存
Heap_stats 表示空闲内存百分比和存活对象大小/堆的总大小
External_memory_stats 表示API 10及以下的外部分配内存,已分配内存/导致垃圾回收的界限
Pause_time 暂停时间,一个表示开始回收垃圾的时间,另一个表示回收结束的暂停时间
D/dalvikvm( 9050): GC_CONCURRENT freed 2049K, 65% free K, external K, paused 2ms+2ms
注意这条信息中的 “ K” 值,这代表着程序使用的heap大小。
2.使用DDMS
Eclipse中的DDMS提供了一个观察内存使用情况的GUI,当我们不断点击Cause GC时,就会看到当前程序的Heap,使用比较方便,具体用法可以Google一下。
3.使用adb dumpsys 命令
adb是一个非常强大的工具,使用adb查看应用程序内存使用情况可按如下格式在命令行里查看内存使用情况:
adb shell dumpsys meminfo
其中,package_name 也可以换成程序的pid,pid可以通过 adb shell top | grep app_name 来查找,下图是某个程序的内存使用情况:
重点关注如下几个字段:
(1) Native/Dalvik 的 Heap 信息
具体在上面的第一行和第二行,它分别给出的是JNI层和Java层的内存分配情况,如果发现这个值一直增长,则代表程序可能出现了内存泄漏。
(2) Total 的 PSS 信息
这个值就是你的应用真正占据的内存大小,通过这个信息,你可以轻松判别手机中哪些程序占内存比较大了。vcD4KPHA+PGJyPgo8L3A+CjxwPjxzdHJvbmc+NC4gyrnTw2FkYiBzaGVsbCBwcm9jcmFuazwvc3Ryb25nPjxicj4Kyta7+tbQtcRzaMrHvq25/b6rvPK5/bXEo6zT0NCpyta7+r/JxNzDu9PQIHByb2NyYW5rIMP8we6jrL/J0tTKudPDZ2VueW1vdGlvbsSjxOLG96Osu/LKx9fUvLqwstewcHJvY3JhbmvD/MHuoaPKudPDcHJvY3JhbmvKsaOsw/zB7tDQtcTK5LP2yOvPws28o7o8L3A+CjxwPjxpbWcgc3JjPQ=="/uploadfile/Collfiles/1.jpg" alt="\">
可以看到,在linux下表示内存的耗用情况有四种不同的表现形式:
VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
VSS:VSS表示一个进程可访问的全部内存地址空间的大小。这个大小包括了进程已经申请但尚未使用的内存空间。在实际中很少用这种方式来表示进程占用内存的情况,用它来表示单个进程的内存使用情况是不准确的。
RSS:表示一个进程在RAM中实际使用的空间地址大小,包括了全部共享库占用的内存,这种表示进程占用内存的情况也是不准确的。
PSS:表示一个进程在RAM中实际使用的空间地址大小,它按比例包含了共享库占用的内存。假如有3个进程使用同一个共享库,那么每个进程的PSS就包括了1/3大小的共享库内存。这种方式表示进程的内存使用情况较准确,但当只有一个进程使用共享库时,其情况和RSS一模一样。
USS:表示一个进程本身占用的内存空间大小,不包含其它任何成分,这是表示进程内存大小的最好方式!
可以看到:VSS>=RSS>=PSS>=USS
5.其它常用命令命令:
adb shell kill PIDNumber
死你想杀死的后台进程来模拟某种 bug 的复现条件。
adb shell ps
查看当前终端中的进程信息
那么如何在代码中判断当前的硬件系统有多少的 RAM 呢?在 Framework
ProcessList.java 中有如下代码可用:
ProcessList() {
MemInfoReader minfo = new MemInfoReader();
minfo.readMemInfo();
mTotalMemMb = minfo.getTotalSize()/();
查看进程占用cpu的情况:adb shell top -n 1 -d 0.5 " grep proc_ id经验743 米
在线时间12 小时
积分 771, 距离下一级还需 1229 积分
积分 771, 距离下一级还需 1229 积分
机型红米手机1S TD 4G版
签到次数50
MIUI版本7.1.5
救砖有时候用的上
我还是先把命令列出来吧……
安装软件:adb install apk (文件名称.apk)
重新安装该软件:adb install -r apk (文件名称.apk)
卸载apk软件:adb uninstall apk(包名.apk)
查看手机上的运行日志,此项可以用来查错:adb logcat
查看手机是否连接,以及连接了几台手机:adb devices
A为手机路径,B为电脑路径,意思为:把文件从手机中复制到电脑上:adb pull &A& &B&
A为手机路径,B为电脑路径,意思为:把文件从电脑复制到手机上:adb push &B& &A&
进入手机的超级终端Terminal:adb shell
重新挂载文件系统:adb remount
重启手机:adb reboot
重启到Recovery界面:adb reboot recovery
重启到bootloader界面:adb reboot bootloader
显示该目录下的文件和文件夹:ls
进入某个目录:cd(注意分隔斜杠方向是/)
获得最高权限:su
查找设备:adb wait-for-device
断开连接:adb kill-server
开始连接:adb start-server
命令已经列了出来了,鉴于保密原因,我不能教大家一些对手机有威胁的代码,所以我只能教以下部分:
1.手机由于替换、由于更改权限等等的造成手机无限重启或者直接无法开机。不刷机解决方法。
启动cmd,追到adb目录。
输入以下命令(括号为显示,没有为无或者未知)(注意大小写)
adb shell(应该显示shell#@android/或类似)
adb remount(应该显示remount succeed)
adb shell chmod #权限代码# /#文件目录#(权限代码查我其他日志,一般都是644,文件目录示例:/system/fonts/DroidSans.ttf)
adb reboot(重启)
2.由于操作不当导致系统损坏而必须刷机,但是又想备份数据。
首先,手机开到REC模式,并且安装了REC的ADB驱动(U*-MS模式)。
然后一样,cmd追到adb目录。(后面的是注释)
adb start-server(然后帮你找手机了)
adb shell(请求shell用户)
# mount /dbdata (其实有些网上说的是直接mount /data就可以,但是我发现我手机上面的数据都是存放在dbdata上)(另一点,这句话我也没试过,自己试试看吧,貌似第三方REC(比如CMW)可以在REC上先挂载。
com.android.providers.contacts 这个是你的电话本
com.android.providers.telephony 这个是你的短信
怎么弄出来呢?我也就不用多解释了,前面已经给出了adb的复制命令了。
3.仿造REC备份整个系统。
一样,先追到adb目录。
然后命令是:adb backup [-system|-nosystem] -all [-apk|-noapk] [-shared|-noshared] -f &档案名称&
(就一条而已)
下面开始解释(相信你会看cmd的也一样看出是什么意思吧)
[-system|-nosystem]
这个指令是告诉adb 在备份时是否要连同系统一起备份。
若没有打的话,默认是-system 表示会一起备份系统。
注意!若连系统一起备份,在还原的时候会复盖系统档案,对于已经升级后的手机是非常不好的
我不知道在没有ROOT的情况下adb是否有权限去还原系统档案,但就算如此 还是不建议这样做。
因此,-nosystem是建议一定要打上的指令。
这个指令是一定要打上去的,问你是否要备份全部的APP。
若有加上-nosystem的指令,那么他就只会备份你目前已经安装上去的APP 而不会连系统APP一起备份。
[-apk|-noapk]
默认是-noapk,这个的意思是是否连安装的APK一起备份。
若为-noapk则只会备份APK的资料档(像是游戏存盘 设定 之类的)。
但我会建议连APK一起备份,因为这样才不会有版本冲突的问题。
[-shared|-noshared]
默认是-noshared 这个会问你是否连手机储存空间或是SD卡的档案一起备份。
我是不知道若有APP安装在SD卡上的时候 没打这指令是否会略过,但若大部分的APP都安装在内部空间的话,这个就可以不用打了。
(注:HTC有保留一个名为com.android.sharedstoragebackup的APK,这个APK会将SD卡或是手机空间的资料都备份 因此除非使用-nosystem指令,否则对于HTC手机来说 不管有无打-shared 手机空间的资料一定会备份)。
-f &档案名称&
这个是指定备份完之后,要存在电脑的哪个地方。
不过记得要打档名 而副档名则一定要打.ab
好的,那么我给出一条比较好的完整命令:
adb backup –system –all –apk –share –f “D:\test\test.ab”
备份补充相关要点:
这边要先说明,由于有些电脑并非使用原生U*3.0,而是使用独立的芯片,并非由芯片组直接提供,因此有时adb会因此无法连线或是传输上出问题,所以 请连接U*2.0或是连接原生的U*3.0。
首先请确定已经有安装手机驱动(特别强调! 至于手机驱动哪找 看你是哪家手机就去哪家的官网找)
接着请连上手机 确定U*侦错模式是否有启动
(注:U*请设定为充电模式或MTP模式 请勿设定成磁盘机或网络分享!)
接下来就可以直接使用backup指令了
比方说我要备份APK资料,要连同APK一起,不要去备份SD卡或外存,不要去备份到系统APP且我要指定档案名称为test,并存在D盘的话,那么指令就是:adb backup -apk -all -nosystem -f “D:\test.ab“
注意1:档案路径和档名若有空格 请记得路径要加双引号””
例:-f “D:\phone backup\htc j.ab“,否则会有问题。
注意2:若输入指令后没出现备份画面或是adb显示错误讯息,有可能是adb没抓到手机,请使用adb devices指令(完整指令请输入adb查看)来看adb是否有抓到手机。
这个会要你输入这个备份档案的保护密码,你可以选择不输入。好了之后就
按“备份我的资料”。
再来就慢慢等它备份啦……备份的过程中,手机画面会出现正在备份的APK及资料。
备份完后就会自动跳出程序,并且看看D槽。
既然已经备份好了,那之后要怎么还原呢?
这时候就要使用另一个指令 adb restore
我还是以刚刚的test.ab档案为例 那么打的时候就输入
adb restore “D:\test.ab“
打入你的手机密码以及你的封包所设定的密码(假如有的话)就会开始做还原的动作,而且它会依据一开始备份时存放的路径下去还原。
等到还原成功后,就可以去看看APP是否都回来了,也可以检查游戏存盘或是设定那些是否还在。
进阶作法及额外注意事项:
个别程式备份方法:
有不少人问我如何备份单个APP就好了,说简单不简单,说难也不难。难就难在得找出APP的物件名称。
什么是物件名称?简单来说物件名称才是属于APP真正的名称,由每一个APP开发者(或开发商)所自己定义的Java package名称,别忘了 Android的应用都是由Java写出来的 如果有写过Java的话应该对package不陌生,至于我们一般看到的APP名称都是另外再加上去的。
比如 从iOS移植到Android上的免费游戏之一,Temple Run,它表面名称虽然就叫Temple Run,但它实际的物件名称为 com.imangi.templerun,而不要以为这就是基本的格式了(什么前面一定是com之类的),这个完全是由开发者自行定义。虽然通常开发者都是定义com开头后面加东西,但是当然也有很坑爹的开发者,本人下载上万测试软件中就出现过那么一个新手代码是cmw.firstblood.supersystem……好吧后来我反编译之后改掉了。
OK 这样大概就了解了吧? 不过要怎么去看物件名称?
基本*般的应用程式管理员和工作管理员都是没办法看到物件名称的,需要安装类似APK管理器之类的软件(像是超级管理器),才可以知道每个APP的类别名称。
特别注意!类别名称是有大小写区分的,请仔细查看,以免备份出问题。
若知道了物件名称后 指令要怎么打呢?我们这边就以Temple Run为例
adb指令就要打成::
adb backup -apk com.imangi.templerun -f “D:\test.ab“
这边说明一下,由于只是备份单一APP的资料,因此不需要加-nosystem -all -noshared等全域指令,只需要这样简单打就可以了,而依照你的喜好,想连APK一起备份就加-apk。
输入完后 手机会再度出现与上头一样的画面,只要按一下备份,就会把指定的APP给备份下来了。
资料另外的储存位置:
有些APP资料或是游戏存盘,并不一定会存在放手机内部的储存空间,有可能会存放在SD卡或是手机的使用者储存空间。
目前已经知道,像是TempleRun,SubwaySurf,以及LINE,他们的纪录都是存在SD卡或是手机储存空间上,至于怎么找他们,只要到SD卡(使用者储存空间)里头看,会有一个Android资料夹,里面有一个data资料夹,就是档案的存放之处,只要备份下来
分享到微信朋友圈
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
已有&1&人评分
MIUI 因你更精彩!
经验16777 米
威望179 米
在线时间670 小时
版本V7.3.1.0.KHDMIDD
机型红米Note WCDMA国际版
MIUI版本V7.3.1.0.KHDMIDD
经验4311 米
在线时间104 小时
机型红米手机1S WCDMA 3G版
签到次数38
MIUI版本7.6.8
通过手机发布
好复杂,没看懂
经验5607 米
在线时间168 小时
版本V8.5.1.0.MALCNED
积分 6026, 距离下一级还需 13974 积分
积分 6026, 距离下一级还需 13974 积分
机型红米手机3S/3X
签到次数44
MIUI版本V8.5.1.0.MALCNED
经验103 米
在线时间20 小时
积分 135, 距离下一级还需 65 积分
积分 135, 距离下一级还需 65 积分
机型红米手机1S TD 3G版
MIUI版本5.2.4
通过手机发布
绝对是精品
经验15360 米
在线时间73 小时
积分 15758, 距离下一级还需 4242 积分
积分 15758, 距离下一级还需 4242 积分
机型小米手机5S
签到次数1398
MIUI版本7.9.4
经验16777 米
威望179 米
在线时间670 小时
版本V7.3.1.0.KHDMIDD
机型红米Note WCDMA国际版
MIUI版本V7.3.1.0.KHDMIDD
为何这么好的资源没人顶?
经验766 米
在线时间45 小时
版本5.8.20
积分 1074, 距离下一级还需 926 积分
积分 1074, 距离下一级还需 926 积分
机型红米手机1S-WCDMA/CDMA
签到次数14
MIUI版本5.8.20
通过手机发布
经验4378 米
在线时间329 小时
版本7.4.27
积分 4923, 距离下一级还需 77 积分
积分 4923, 距离下一级还需 77 积分
机型小米手机4c
签到次数134
MIUI版本7.4.27
1.jpg (108.33 KB, 下载次数: 2)
经验4378 米
在线时间329 小时
版本7.4.27
积分 4923, 距离下一级还需 77 积分
积分 4923, 距离下一级还需 77 积分
机型小米手机4c
签到次数134
MIUI版本7.4.27
大神我手机开不了机也进入不了REC怎么办???
已关注微信
已关注极客秀微信
关注腾讯微博
已关注腾讯微博
关注新浪微博
已关注新浪微博
MIUI 300周
MIUI 300周更新纪念勋章
2018新年勋章
参与回帖活动
MIUI 9纪念勋章
小米7周年勋章
2017米粉节晒单赢专属勋章
参与红米Note 4X活动
APP 1000万
MIUI论坛APP注册用户突破1000万纪念勋章
MIUI3亿用户纪念勋章
参与回帖活动
MIUI七周年
感恩节勋章
参与回帖活动
MIUI 3000万
MIUI 3000万发烧友纪念勋章
MIUI 2000万
MIUI 2000万发烧友纪念勋章
1000万用户纪念勋章
MIUI1000万用户纪念勋章
MIUI三周年
MIUI三周年纪念勋章
Copyright (C) 2017 MIUI
京ICP备号 | 京公网安备34号 | 京ICP证110507号如何使用ADB命令查看Android手机相关信息参数?_百度知道
如何使用ADB命令查看Android手机相关信息参数?
查看机器的CID号3:查看机器板子代号4.getprop ro.carrier.getprop ro.serialno.bootloader:查看SPL(Hboot)版本号5.getprop:查看机器的全部信息参数在这能看到你机器的全部的信息参数,从你的硬件信息到所刷的ROM版本信息:查看机器的序列号2.getprop ro.getprop ro.hardware今天教大家用ADB命令来查看自己手机的相关硬件以及其他的参数信息,运用这些ADB命令可以很直观的查看到你手机上的硬件与软件方面的详细信息。要运用ADB命令,首先在你的电脑键盘上同时按下Win+R,这时候会弹出一个“运行”窗口,接着在框中输入“CMD”,并按下“确定”,这时候就会弹出一个命令窗了,这时下面步骤中所提供的ADB命令也就是在这个窗口下所运行的!ABD命令的具体操作步骤如下:1
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)有没有adb命令用来查看关于手机网络状态?
[问题点数:40分]
有没有adb命令用来查看关于手机网络状态?
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|

我要回帖

更多关于 64g手机实际可用内存 的文章

 

随机推荐