高考考试网
当前位置: 首页 高考资讯

内存修改器安卓(Android内存优化工具)

时间:2023-08-04 作者: 小编 阅读量: 2 栏目名: 高考资讯

内存修改器安卓?下面内容希望能帮助到你,我们来一起看看吧!内存修改器安卓整理下Android内存优化常用的几种工具,top命令、adbshelldumpsysmeminfo、MemoryProfiler、LeakCanary、MAT1.toptop命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。

内存修改器安卓?整理下Android内存优化常用的几种工具,top命令、adb shell dumpsys meminfo、Memory Profiler、LeakCanary、MAT,现在小编就来说说关于内存修改器安卓?下面内容希望能帮助到你,我们来一起看看吧!

内存修改器安卓

整理下Android内存优化常用的几种工具,top命令、adb shell dumpsys meminfo、Memory Profiler、LeakCanary、MAT

1. top

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。

查看top命令的用法

$ adb shell top --helpusage: top [-Hbq] [-k FIELD,] [-o FIELD,] [-s SORT] [-n NUMBER] [-m LINES] [-d SECONDS] [-p PID,] [-u USER,]Show process activity in real time.-HShow threads-kFallback sort FIELDS (default -S,-%CPU,-ETIME,-PID)-oShow FIELDS (def PID,USER,PR,NI,VIRT,RES,SHR,S,%CPU,%MEM,TIME+,CMDLINE)-OAdd FIELDS (replacing PR,NI,VIRT,RES,SHR,S from default)-sSort by field number (1-X, default 9)-bBatch mode (no tty)-dDelay SECONDS between each cycle (default 3)-mMaximum number of tasks to show-nExit after NUMBER iterations-pShow these PIDs-uShow these USERs-qQuiet (no header lines)Cursor LEFT/RIGHT to change sort, UP/DOWN move list, space to forceupdate, R to reverse sort, Q to exit.复制代码

使用top命令显示一次进程信息,以便讲解进程信息中各字段的含义

^[[41;173RTasks: 754 total,1 running, 753 sleeping,0 stopped,0 zombieMem:5.5G total,5.4G used,165M free,76M buffers Swap:2.5G total,789M used,1.7G free,2.4G cached800%cpu 100%user3%nice54%sys 641%idle0%iow3%irq0%sirq0%hostPID USERPRNI VIRTRESSHR S[%CPU] %MEMTIME+ ARGS15962 u0_a89410 -10 6.6G 187M76M S 75.63.28:16.55 asia.bluepay.cl+785 system-2-8 325M13M 7.6M S 29.70.284:03.91 surfaceflinger25255 shell20035M 2.7M 1.6M R 21.60.00:00.16 top -n 1739 system-3-8 177M 3.6M 2.2M S 10.80.016:00.36 android.hardwar+16154 u0_i908610 -10 1.3G40M19M S5.40.60:46.18 com.google.andr+13912 u0_a8720017G 197M86M S5.43.423:56.88 com.tencent.mm24789 rootRT-2000 D2.70.00:01.36 [mdss_fb0]24704 root200000 S2.70.00:01.20 [kworker/u16:12]20096 u0_a943010 6.1G 137M53M S2.72.30:31.45 com.xiaomi.mark+ 2272 system18-2 8.7G 407M 267M S2.77.1 191:11.32 system_server744 systemRT0 1.3G 1.6M 1.4M S2.70.072:22.41 android.hardwar+442 rootRT0000 S2.70.05:59.68 [cfinteractive]291 root-30000 S2.70.05:00.17 [kgsl_worker_th+10 root200000 S2.70.01:55.84 [rcuop/0]7 root200000 S2.70.02:46.82 [rcu_preempt]25186 shell20034M 1.9M 1.4M S0.00.00:00.71 logcat -v long +25181 root200000 S0.00.00:00.00 [kworker/2:3]25137 root200000 S0.00.00:00.00 [kworker/1:3]25118 system200 5.2G83M54M S0.01.40:01.05 com.android.set+24946 u0_a57200 5.1G60M37M S0.01.00:00.82 com.xiaomi.acco+复制代码

第 1 行:进程信息

  • 总共(total):754个
  • 运行中(running)状态:1个
  • 休眠(sleeping)状态:753个
  • 停止(stopped)状态:0个
  • 僵尸(zombie)状态:0个

第 2 行:内存信息

  • 5.5G total:物理内存总量
  • 5.4G used:使用中的内存量
  • 165M free:空闲内存量
  • 76M buffers: 缓存的内存量

第 3 行:Swap分区信息

  • 2.5G total:交换区总量
  • 789M used:使用的交换区大小
  • 1.7G free:空闲交换区大小
  • 2.4G cached:缓冲的交换区大小

内存监控时,可以监控swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是内存不够用了。

第 4 行:CPU信息

  • 800%cpu:8核cpu
  • 100%user:用户进程使用CPU占比
  • 3%nice:优先值为负的进程占比
  • 54%sys:内核进程使用CPU占比
  • 641%idle:除IO等待时间以外的其它等待时间占比
  • 0%iow:IO等待时间占比
  • 3%irq:硬中断时间占比
  • 0%sirq:软中断时间占比

第 5 行及以下:各进程的状态监控

  • PID:进程id
  • USER:进程所属用户
  • PR:进程优先级
  • NI:nice值,负值表示高优先级,正值表示低优先级
  • VIRT:进程使用的虚拟内存总量,VIRT=SWAP+RES
  • RES:进程使用的、未被换出的物理内存大小,RES=CODE+DATA
  • SHR:共享内存大小
  • S:进程状态
  • %CPU:上次更新到现在的CPU占用时间比
  • %MEM:使用物理内存占比
  • TIME+:进程时间的CPU时间总计,单位1/100秒
  • ARGS:进程名

2. dumpsys meminfo

首先了解下Android中最重要的四大内存指标的概念

指标全称含义等价
USSUnique Set Size独占物理内存进程独占的内存
PSSProportional Set Size实际使用物理内存PSS = USS + 按比例包含共享库内存
RSSResident Set Size实际使用物理内存RSS = USS + 包含共享库内存
VSSVirtual Set Size虚拟耗用内存VSS = 进程占用内存(包括虚拟耗用) + 共享库(包括比例分配部分)

我们主要使用USS和PSS来衡量进程的内存使用情况

dumpsys meminfo命令展示的是系统整体内存情况,内存项按进程进行分类

$ adb shell dumpsys meminfoApplications Memory Usage (in Kilobytes):Uptime: 168829244 Realtime: 1465769995// 根据进程PSS占用值从大到小排序Total PSS by process:272,029K: system (pid 2272)234,043K: com.tencent.mm (pid 13912 / activities)185,914K: com.android.systemui (pid 13606)107,294K: com.tencent.mm:appbrand0 (pid 5563)101,526K: com.tencent.mm:toolsmp (pid 9287)96,645K: com.miui.home (pid 15116 / activities)...// 以oom来划分,会详细列举所有的类别的进程Total PSS by OOM adjustment:411,619K: Native62,553K: android.hardware.camera.provider@2.4-service (pid 730)21,630K: logd (pid 579)16,179K: surfaceflinger (pid 785)...272,029K: System272,029K: system (pid 2272)361,942K: Persistent185,914K: com.android.systemui (pid 13606)37,917K: com.android.phone (pid 2836)23,510K: com.miui.contentcatcher (pid 3717)...36,142K: Persistent Service36,142K: com.android.bluetooth (pid 26472)101,198K: Foreground72,743K: com.miui.securitycenter.remote (pid 4125)28,455K: com.android.settings (pid 30919 / activities)338,088K: Visible96,645K: com.miui.home (pid 15116 / activities)46,939K: com.miui.personalassistant (pid 31043)36,491K: com.xiaomi.xmsf (pid 4197)...47,703K: Perceptible17,826K: com.xiaomi.metoknlp (pid 4477)10,748K: com.lbe.security.miui (pid 5097)10,528K: com.xiaomi.location.fused (pid 4563)8,601K: com.miui.mishare.connectivity (pid 4227)13,088K: Perceptible Low13,088K: com.miui.analytics (pid 19306)234,043K: Backup234,043K: com.tencent.mm (pid 13912 / activities)22,028K: A Services22,028K: com.miui.powerkeeper (pid 29762)198,787K: Previous33,375K: com.android.quicksearchbox (pid 31023)23,278K: com.google.android.webview:sandboxed_process0:org.chromium.content.app.SandboxedProcessService0:0 (pid 16154)171,434K: B Services45,962K: com.tencent.mm:push (pid 14095)31,514K: com.tencent.mobileqq:MSF (pid 12051)22,691K: com.xiaomi.mi_connect_service (pid 22821)...538,062K: Cached107,294K: com.tencent.mm:appbrand0 (pid 5563)101,526K: com.tencent.mm:toolsmp (pid 9287)72,112K: com.tencent.mm:tools (pid 9187)...// 按内存的类别来进行划分Total PSS by category:692,040K: Native328,722K: Dalvik199,826K: .art mmap129,981K: .oat mmap126,624K: .dex mmap124,509K: Unknown92,666K: .so mmap68,189K: Dalvik Other53,491K: .apk mmap44,104K: Gfx dev28,099K: Other mmap24,960K: .jar mmap7,956K: Ashmem3,700K: Stack3,368K: Other dev450K: .ttf mmap4K: Cursor0K: EGL mtrack0K: GL mtrack0K: Other mtrack// 手机整体内存使用情况Total RAM: 5,862,068K (status normal) Free RAM: 3,794,646K (538,062K cached pss + 3,189,244K cached kernel +0K cached ion +67,340K free) Used RAM: 2,657,473K (2,208,101K used pss +449,372K kernel) Lost RAM:487,987KZRAM:219,996K physical used for826,852K in swap (2,621,436K total swap)Tuning: 256 (large 512), oom322,560K, restore limit107,520K (high-end-gfx)复制代码

查看单个进程的内存信息,命令如下

adb shell dumpsys meminfo [pid | packageName]复制代码

我们查看下微信的内存信息

$ adb shell dumpsys meminfo com.tencent.mmApplications Memory Usage (in Kilobytes):Uptime: 169473031 Realtime: 1466413783** MEMINFO in pid 13912 [com.tencent.mm] **PssPrivatePrivateSwapPssHeapHeapHeapTotalDirtyCleanDirtySizeAllocFree------------------------------------------Native Heap519875192406193115904413933519708Dalvik Heap74302742728263320917018459424576 Dalvik Other10136101360290Stack848408Ashmem2000Gfx dev8808880800Other dev15601560.so mmap998498474368493.jar mmap142805600.apk mmap2942010080.ttf mmap1221010640.dex mmap313024430004528.oat mmap268802320.art mmap27922352403334Other mmap693227526320Unknown4247423247493TOTAL293721155588411448471036821432392944284 App SummaryPss(KB)------ Java Heap:76664Native Heap:51924Code:41332Stack:84Graphics:8808Private Other:17920System:96989TOTAL:293721TOTAL SWAP PSS:84710 ObjectsViews:623ViewRootImpl:1AppContexts:9 Activities:1Assets:12AssetManagers:0Local Binders:198Proxy Binders:183Parcel memory:46Parcel count:185Death Recipients:125OpenSSL Sockets:1WebViews:0 SQLMEMORY_USED:156PAGECACHE_OVERFLOW:13MALLOC_SIZE:117 DATABASESpgszdbszLookaside(b)cacheDbname42846721/26/4/data/user/0/com.tencent.mm/databases/Scheduler.db Asset Allocations: 409K: 12K: 1031K复制代码
  1. App Summary各项指标解读如下,通常我们需要重点关注Java Heap和Native Heap的大小,如果持续上升,有可能存在内存泄露。
属性内存组成
Java HeapDalvik Heap的Private Dirty + .art mmap的Private Dirty&Private Clean
Native HeapNative Heap的Private Dirty
Code.so mmap + .jar mmap + .apk mmap + .ttf.mmap + .dex.mmap + .oat mmap的Private Dirty&Private Clean
StackStack的Private Dirty
GraphicsGfx dev + EGL mtrack + GL mtrack的Private Dirty&Private Clean
  1. Objects中Views、Activities、AppContexts的异常可以判断有内存泄露,比如刚退出应用,查看Activites是否为0,如果不为0,则有Activity没有销毁。

3. Memory Profiler

Memory Profiler是 Android Profiler 中的一个组件,实时图表展示应用内存使用量,识别内存泄露和抖动,提供捕获堆转储,强制GC以及跟踪内存分配的能力。

Android Profiler官方文档

4. Leak Canary

非常好用的内存泄露检测工具,对于Activity/Fragment的内存泄露检测非常方便。

Square公司开源 官网地址,原理后面单独分析。

5. MAT

MAT是Memory Analyzer tool的缩写,是一个非常全面的分析工具,使用相对复杂点。 关于安装和配置有很多很好的文章结束,这里就不单独讲了,后面分析具体案例。

Android 内存优化篇 – 使用profile 和 MAT 工具进行内存泄漏检测

使用Android Studio和MAT进行内存泄漏分析

内存问题高效分析方法

  1. 接入LeakCanary,监控所有Activity和Fragment的释放,App所有功能跑一遍,观察是否有抓到内存泄露的地方,分析引用链找到并解决问题,如此反复,直到LeakCanary检查不到内存泄露。
  2. adb shell dumpsys meminfo命令查看退出界面后Objects的Views和Activities数目,特别是退出App后数目为否为0。
  3. 打开Android Studio Memory Profiler,反复打开关闭页面多次,点击GC,如果内存没有恢复到之前的数值,则可能发生了内存泄露。再点击Profiler的垃圾桶图标旁的heap dump按钮查看当面内存堆栈情况,按包名找到当前测试的Activity,如果存在多份实例,则很可能发生了内存泄露。
  4. 对于可疑的页面dump出内存快照文件,转换后用MAT打开,针对性的分析。
  5. 观察Memory Profiler每个页面打开时的内存波峰和抖动情况,针对性分析。
  6. 开发者选项中打开“不保留后台活动”,App运行一段时间后退到后台,触发GC,dump内存快照。MAT分析静态内容是否有可以优化的地方,比如图片缓存、单例、内存缓存等。
    推荐阅读
  • 枸杞茶的功效(枸杞茶简介)

    接下来我们就一起去了解一下吧!枸杞茶的功效枸杞茶功效:清热解渴。枸杞茶,饮料的一种,是指以枸杞或加茶叶、菊花、糖等配料冲制而成的饮料。每次用杭白菊、枸杞各10克加入大茶壶内,加入热开水,10分钟后便可饮用。枸杞对于养精益气,温热滋补,瘦身减肥有很强的功效。晚上在做操前喝,早晨在做操后喝,常见的枸杞茶有:三花枸杞茶、天雁枸杞茶、山楂枸杞茶、枸杞菊花茶等。

  • 陈亮21293期3d分析(直选看好奇奇奇)

    陈亮21293期3d分析一、上期回顾:福彩3D第2022048期开出奖号225。结合其它参数来看,福彩3D第2022049两码关注59、79重点关注59,独胆看好9。

  • 奉劝各位想养猫的朋友(这篇文章不得不看哦)

    先说背景,叮当到家10个月整,我家不算是富养的,猫粮吃的好一点,偶尔吃零食罐头,不吃生骨肉,用的东西也都是能平替就平替的。接种疫苗2针:300天气凉的时候去店里洗澡3次:300叮当从接回来就不太爱吃罐头,所以主粮给他选的偏好一些,以百利高蛋白和渴望为主,偶尔会吃些冻干、猫条等小零食,罐头用来改善口味,没有吃过生骨肉。叮当不出门,也会每三个月进行一次内驱,两个月一次外驱。

  • 激励文案(激励文案有哪些)

    激励文案如果事与愿违,就相信上天一定另有安排;所有失去的,都会以另外一种方式归来。人一生中最可怕是无所事事,最可恨是无所追求,最可悲是无所作为。一个人的行动,决定一个人的未来。滴水穿石,不是水的力量,而是持续的力量!现在偷的每个懒,都是给未来挖的坑,以后的日子要付出数倍的努力来填补这个坑。现在吃的每个苦,都是给未来添砖加瓦,以后的日子会加倍享受苦所带来的乐。

  • 石家庄市新增的公交线路在哪里(石家庄公交即将开通新路线)

    为缓解56路客运压力,更好的方便东京北区域及方兴路沿线居民到市中心博物院地带的出行,公交于4月17日开通东京北至博物院的83路公交线路。方案如下:1、起止点东京北至博物院。闽江道临时撤销水榭花都(北侧)、和院小区站位,封龙山大街临时撤销紫睿天和站位。

  • 王者荣耀s28赛季高端局的法师(王者荣耀久诚变捞)

    王者荣耀久诚变捞三月九日,HerovsGK,第二场,在这一场比赛中,万众瞩目的fmvp久诚拿到了他的本命成名英雄干将,在解说和观众都报以高度期待的情况下,却因为他的频频失误和错误决策,导致输掉了这一小局比赛很多人都说。

  • 椒盐虾简单的做法(椒盐虾简单的做法推荐)

    接下来我们就一起去了解一下吧!椒盐虾简单的做法椒盐虾的做法:干胡椒和黑胡椒入锅高温炒香,倒入石臼中研成粉,加一茶匙盐搅拌均匀,装碗备用。盐腌制大虾后糊上米面粉,下热油锅炸至金黄捞出。撒上椒盐搅拌均匀,调好蘸料,装盘撒配菜。

  • cpd化妆品是什么牌子(cpd化妆品是哪个牌子)

    cpd化妆品是什么牌子CPB,全称ClédePeauBeauté,法文含义是“开启美丽肌肤的钥匙”,中文翻译为“肌肤之钥”,是日本资生堂旗下的一个的顶级品牌。CPB肌肤之钥,全称ClédePeauBeauté,品牌名为法语,意指“开启美丽肌肤的钥匙”。CPB肌肤之钥包含亮采4C护理系列及SYNACTIF奢雅极系列。护肤品以保湿及抗衰老见长,其质感细腻。另外,除了全线的护肤品之外,CPB肌肤之钥的彩妆类产品包含粉底、眼影、唇膏、腮红等。CPB于1997年正式面市,2001年正式导入中国市场。

  • 人工挤牛奶太累了(如何减少挤奶工的行走距离)

    在以上两个流程中,都能满足从刺激按摩到套杯的时间间隔超过了90秒。在两工序挤奶流程中,挤奶工共通过了30个牛位。此外,通过采取顺序式挤奶流程,即第1位挤奶工负责20头奶牛的前药浴、挤头几把奶和再次药浴工作,第2位挤奶工负责这些奶牛的擦干和套杯工作,也可以减少挤奶工的行走距离。通常情况下,当第1位挤奶工操作至第8-10头奶牛时,第2位挤奶工可以开始擦干和套杯工作。

  • 2022年秋季义务教育课标(2022年义务教育新课标改革)

    新的方案和标准将于在今年秋季开始执行。爱阿教育了解到,大多数家长对新课标的调整给予肯定。同时,爱阿教育认为面对当前普遍的“鸡娃”内卷的焦虑,家长也要保持良好心态,助力孩子全方位发展。爱阿教育精益求精持续优化3D资源教材本次义务教育课程方案和课程标准的改革,也受到教育领域各科技企业的高度关注。爱阿平台将进一步在增加教学趣味性、交互性,提供多样性教学方式等方面提出优化需求。