1.基础知识准备:
1.1 PSS
Item | 全称 | 含义 | 等价 |
---|---|---|---|
USS | Unique Set Size | 物理内存 | 进程独占的内存 |
PSS | Proportional Set Size | 物理内存 | PSS= USS+ 按比例包含共享库 |
RSS | Resident Set Size | 物理内存 | RSS= USS+ 包含共享库 |
VSS | Virtual Set Size | 虚拟内存 | VSS= RSS+ 未分配实际物理内存 |
故内存的大小关系:VSS >= RSS >= PSS >= USS
1.2 OOM
首先要明白android基于linux系统,系统的内存使用规则是不一样的。
windows下的内存管理规则为:退出即销毁,程序的内存会被回收。
linux的内存认为不用白不用,在程序退出后,如果没有新的内存申请,则内存不会被释放,这样下一次运行的时候会提高响应速度。
如此,android设计了low_memory和OUT_OF_MEMORY机制。
low_memory是在程序申请内存的时候报警,然后可以对这个报警进行一些响应,比如释放不用的资源来防止崩溃之类的。在低内存机器中,观察launcher在机器刚开机和运行一段时间后所占内存的大小就能发现,开机的时候内存占用很大,但是随着应用越开越多,占用内存在一步步被释放。
而OOM机制是机器底层的一种强制保鲜,在OOM发生的时候内核会排序强制杀掉进程来保证系统的继续运行,同样这种OOM异常容易发生在低内存机器上,比如512M。
首先系统会根据程序是否是空进程(已经由用户关闭的不带有任何服务和provider的进程),是否有服务,是否有provider,是否为前台进程,来排序,可以输入 adb shell dumpsys meminfo来查看,列出信息中的Total PSS by OOM adjustment:就是系统为程序的OOM排序结果,OOM异常的时候会根据这个表单从下网上杀掉进程释放内存。
OOM的阈值:是机器判定发生OOM的规则,在/kernel/drivers/staging/android/lowmemorykiller.c中可以看到
lowmem_adj[6] 为OOM等级,lowmem_minfree[6]为对应的在系统内存低于多少的时候,adj中高于该等级的活动都要被强制释放。对应的可以修改阈值,完成后编译lk就可以了。
以上就是关于low_memory和OOM的机制和修改
2.命令
2.1 dumpsys meminfo
adb shell dumpsys meminfo > /home/jiatai/shell_test/adbshell/dumpsys_meminfo.txt
Applications Memory Usage (in Kilobytes):
Uptime: 88147036 Realtime: 281774647
Total PSS by process:
384,092K: com.tencent.mm (pid 4145 / activities)
201,704K: com.tencent.mm:tools (pid 22565)
196,064K: com.android.systemui (pid 1962 / activities)
181,041K: system (pid 1515)
153,757K: com.zhihu.android (pid 11002 / activities)
...
Total PSS by OOM adjustment:
328,105K: Native
28,264K: android.hardware.camera.provider@2.4-service (pid 736)
25,669K: logd (pid 568)
21,586K: android.hardware.graphics.composer@2.1-service (pid 742)
...
560,837K: Persistent
196,064K: com.android.systemui (pid 1962 / activities)
181,041K: system (pid 1515)
39,864K: com.android.phone (pid 2249)
29,365K: com.android.nfc (pid 3078)
23,107K: com.miui.daemon (pid 3066)
20,614K: com.miui.whetstone (pid 3131)
17,774K: com.xiaomi.xmsf (pid 3090)
12,414K: com.xiaomi.finddevice (pid 3104)
9,671K: com.miui.contentcatcher (pid 3039)
8,156K: .dataservices (pid 2195)
5,503K: com.qualcomm.qti.telephonyservice (pid 2205)
4,838K: com.qualcomm.qcrilmsgtunnel (pid 2232)
4,314K: org.simalliance.openmobileapi.service (pid 3052)
4,140K: com.goodix.fingerprint (pid 3027)
3,972K: com.qualcomm.qti.services.secureui:sui_service (pid 3116)
13,162K: Persistent Service
13,162K: com.android.bluetooth (pid 1924)
277,044K: Foreground
153,757K: com.zhihu.android (pid 11002 / activities)
51,420K: com.google.android.webview:sandboxed_process0 (pid 11169)
32,895K: com.miui.securitycenter.remote (pid 3706)
20,325K: android.process.media (pid 6268)
18,647K: com.miui.powerkeeper (pid 3649)
235,251K: Visible
82,287K: com.sohu.inputmethod.sogou.xiaomi (pid 4256)
42,269K: com.miui.guardprovider (pid 20178)
39,993K: com.xiaomi.hm.health (pid 11687)
17,436K: com.xiaomi.metoknlp (pid 3379)
14,516K: com.miui.systemAdSolution (pid 11865)
11,884K: com.miui.analytics (pid 11697)
10,754K: com.xiaomi.account (pid 16448)
7,871K: com.xiaomi.bluetooth (pid 2737)
4,508K: com.miui.wmsvc (pid 4988)
3,733K: com.android.smspush (pid 12098)
226,370K: Perceptible
136,693K: tv.danmaku.bili (pid 6935 / activities)
29,606K: tv.danmaku.bili:download (pid 7148)
27,739K: tv.danmaku.bili:ijkservice (pid 7449)
18,397K: tv.danmaku.bili:push (pid 6978)
9,104K: com.lbe.security.miui (pid 3871)
4,831K: com.google.android.webview:sandboxed_process0 (pid 7027)
524,837K: Backup
384,092K: com.tencent.mm (pid 4145 / activities)
140,745K: com.netease.cloudmusic (pid 8758 / activities)
42,365K: A Services
32,637K: com.netease.cloudmusic:play (pid 8828)
9,728K: com.android.camera (pid 13584)
96,112K: Home
96,112K: com.miui.home (pid 3234 / activities)
26,240K: Previous
26,240K: com.tencent.mm:exdevice (pid 4276)
339,369K: B Services
201,704K: com.tencent.mm:tools (pid 22565)
31,761K: com.tencent.mm:push (pid 4423)
28,118K: tv.danmaku.bili:web (pid 7249)
18,376K: com.android.thememanager (pid 13077)
14,637K: com.zhihu.android:pushservice (pid 11284)
11,669K: com.android.settings:remote (pid 12286)
10,808K: org.simalliance.openmobileapi.service:remote (pid 5203)
8,930K: com.xiaomi.market:guard (pid 20117)
5,174K: com.miui.core (pid 15435)
4,265K: com.qualcomm.qti.callenhancement (pid 12121)
3,927K: com.xiaomi.android.dm.service (pid 12158)
343,692K: Cached
86,893K: com.tencent.mm:appbrand0 (pid 10030)
23,111K: com.google.android.webview:sandboxed_process1 (pid 7831)
23,039K: com.miui.personalassistant (pid 11957)
20,151K: com.miui.personalassistant:alipayinside (pid 21144)
19,516K: com.google.android.webview:sandboxed_process0 (pid 22792)
18,828K: com.miui.gallery (pid 9255)
18,711K: tv.danmaku.bili:stats (pid 7109)
17,824K: com.android.browser (pid 12782)
17,801K: com.miui.systemAdSolution:ui (pid 9630)
15,023K: android.process.acore (pid 9167)
11,349K: com.miui.cloudservice (pid 9094)
11,090K: com.xiaomi.market (pid 10966)
10,588K: com.miui.hybrid (pid 11718)
8,993K: com.miui.personalassistant:trans (pid 11924)
8,190K: com.miui.micloudsync:sync (pid 12486)
7,788K: com.xiaomi.simactivate.service (pid 9115)
7,224K: com.android.settings (pid 20783)
6,160K: com.miui.micloudsync (pid 12505)
4,485K: com.android.printspooler (pid 11362)
3,541K: com.android.musicfx (pid 9407)
3,387K: com.xiaomi.micloud.sdk (pid 11434)
Total PSS by category:
1,127,920K: Native
310,168K: Gfx dev
301,477K: Unknown
281,096K: Dalvik
260,949K: .dex mmap
248,877K: .so mmap
210,819K: .art mmap
75,116K: Dalvik Other
72,937K: .oat mmap
71,951K: .apk mmap
18,961K: Other mmap
17,368K: Ashmem
6,667K: Stack
5,182K: .ttf mmap
2,325K: .jar mmap
1,559K: Other dev
12K: Cursor
0K: EGL mtrack
0K: GL mtrack
0K: Other mtrack
Total RAM: 5,862,112K (status normal)
Free RAM: 2,930,144K ( 343,692K cached pss + 2,199,148K cached kernel + 130,568K cached ion + 256,736K free)
Used RAM: 3,178,932K (2,669,692K used pss + 509,240K kernel)
Lost RAM: 789,856K
Tuning: 256 (large 512), oom 322,560K, restore limit 107,520K (high-end-gfx)
如上dumpsys meminfo结果可以看出分如下几类统计ram使用情况:
1) Total PSS by process
2) Total PSS by OOM adjustment
- Native
- Persistent
- Persistent Service
- Foreground
- Visible
- Perceptible
- Backup
- A Services
- Home
- Previous
- B Services
- Cached
3) Total PSS by category:按类别统计的ram使用情况
最后这显示了手机整体ram使用情况:
Total RAM: 5,862,112K (status normal)
Free RAM: 2,930,144K ( 343,692K cached pss + 2,199,148K cached kernel + 130,568K cached ion + 256,736K free)
Used RAM: 3,178,932K (2,669,692K used pss + 509,240K kernel)
Lost RAM: 789,856K
Tuning: 256 (large 512), oom 322,560K, restore limit 107,520K (high-end-gfx)
2.2 cat /proc/meminfo
MemTotal: 5862112 kB
MemFree: 290600 kB
MemAvailable: 2250212 kB
Buffers: 735864 kB
Cached: 1371512 kB
SwapCached: 0 kB
Active: 3215144 kB
Inactive: 891736 kB
Active(anon): 2092852 kB
Inactive(anon): 34536 kB
Active(file): 1122292 kB
Inactive(file): 857200 kB
Unevictable: 82496 kB
Mlocked: 82496 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 2082104 kB
Mapped: 891920 kB
Shmem: 45676 kB
Slab: 260080 kB
SReclaimable: 96904 kB
SUnreclaim: 163176 kB
KernelStack: 63904 kB
PageTables: 76856 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2931056 kB
Committed_AS: 139282048 kB
VmallocTotal: 258867136 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
CmaTotal: 163840 kB
CmaFree: 0 kB
2.3 cat /proc/cpuinfo
Processor : AArch64 Processor rev 4 (aarch64)
processor : 0
BogoMIPS : 38.40
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x801
CPU revision : 4
processor : 1
BogoMIPS : 38.40
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x801
CPU revision : 4
processor : 2
BogoMIPS : 38.40
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x801
CPU revision : 4
processor : 3
BogoMIPS : 38.40
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x801
CPU revision : 4
processor : 4
BogoMIPS : 38.40
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x800
CPU revision : 1
processor : 5
BogoMIPS : 38.40
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x800
CPU revision : 1
processor : 6
BogoMIPS : 38.40
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x800
CPU revision : 1
processor : 7
BogoMIPS : 38.40
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x51
CPU architecture: 8
CPU variant : 0xa
CPU part : 0x800
CPU revision : 1
Hardware : Qualcomm Technologies, Inc MSM8998
MSM8998就是高通骁龙835,8核处理器
2.4 dumpsys cpuinfo
chiron:/proc $ dumpsys cpuinfo
Load: 4.07 / 4.05 / 3.99
CPU usage from 215568ms to 195558ms ago (2018-08-10 22:53:04.131 to 2018-08-10 22:53:24.141):
12% 6935/tv.danmaku.bili: 10% user + 1.2% kernel / faults: 52 minor
4.7% 11002/com.zhihu.android: 1.1% user + 3.5% kernel / faults: 51 minor
3.9% 780/surfaceflinger: 1.7% user + 2.1% kernel
1% 1515/system_server: 0.2% user + 0.7% kernel / faults: 46 minor
0.9% 11284/com.zhihu.android:pushservice: 0.3% user + 0.6% kernel
0.9% 14337/kworker/u16:11: 0% user + 0.9% kernel
0.7% 22/ksoftirqd/2: 0% user + 0.7% kernel
0.5% 7449/tv.danmaku.bili:ijkservice: 0.2% user + 0.2% kernel
0.5% 13718/kworker/u16:5: 0% user + 0.5% kernel
0.4% 4145/com.tencent.mm: 0.4% user + 0% kernel / faults: 146 minor
0.4% 14058/kworker/u16:0: 0% user + 0.4% kernel
0% 4423/com.tencent.mm:push: 0% user + 0% kernel / faults: 56 minor
0.2% 22565/com.tencent.mm:tools: 0.2% user + 0% kernel
0.2% 81/smem_native_rpm: 0% user + 0.2% kernel
0.2% 999/msm_irqbalance: 0% user + 0.1% kernel
0.1% 15/ksoftirqd/1: 0% user + 0.1% kernel
0.1% 438/cfinteractive: 0% user + 0.1% kernel
0% 10/rcuop/0: 0% user + 0% kernel
0% 902/thermal-engine: 0% user + 0% kernel
0% 3649/com.miui.powerkeeper: 0% user + 0% kernel / faults: 8 minor
0% 6978/tv.danmaku.bili:push: 0% user + 0% kernel / faults: 3 minor
0% 14395/kworker/0:0: 0% user + 0% kernel
0% 20178/com.miui.guardprovider: 0% user + 0% kernel / faults: 236 minor
0% 3/ksoftirqd/0: 0% user + 0% kernel
0% 7/rcu_preempt: 0% user + 0% kernel
0% 568/logd: 0% user + 0% kernel
0% 777/lmkd: 0% user + 0% kernel
0% 883/sensors.qcom: 0% user + 0% kernel / faults: 30 minor
0% 1032/ipacm: 0% user + 0% kernel
0% 1962/com.android.systemui: 0% user + 0% kernel / faults: 3 minor
0% 3090/com.xiaomi.xmsf: 0% user + 0% kernel / faults: 11 minor
0% 3131/com.miui.whetstone: 0% user + 0% kernel / faults: 1 minor
0% 5654/tcpdump: 0% user + 0% kernel
0% 9293/adbd: 0% user + 0% kernel / faults: 45 minor
4.1% TOTAL: 2.2% user + 1.4% kernel + 0% iowait + 0.2% irq + 0% softirq
可以查看cpu利用率,iowait过高有可能引起anr。
2.5 dumpsys -l
chiron:/proc $ dumpsys -l
Currently running services:
DockObserver
MiuiBackup
MiuiInit
ProcessManager
SurfaceFlinger
accessibility
account
activity
alarm
android.security.keystore
appops
appwidget
audio
autofill
backup
battery
batteryproperties
batterystats
bluetooth_manager
carrier_config
clipboard
cneservice
com.goodix.FingerprintService
com.qualcomm.location.izat.IzatService
2.6 dumpsys meminfo packageName
chiron:/proc $ dumpsys meminfo com.android.settings
Applications Memory Usage (in Kilobytes):
Uptime: 90592678 Realtime: 284220288
** MEMINFO in pid 14341 [com.android.settings] **
Pss Private Private SwapPss Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
------ ------ ------ ------ ------ ------ ------
Native Heap 16448 16212 0 0 38912 33802 5109
Dalvik Heap 6418 6400 0 0 5291 2646 2645
Dalvik Other 1137 1136 0 0
Stack 48 48 0 0
Ashmem 10 8 0 0
Gfx dev 4212 4212 0 0
Other dev 8 0 8 0
.so mmap 1208 216 20 0
.jar mmap 0 0 0 0
.apk mmap 1138 0 700 0
.ttf mmap 163 0 64 0
.dex mmap 5545 32 3748 0
.oat mmap 1262 0 12 0
.art mmap 2878 2528 36 0
Other mmap 15 4 0 0
Unknown 1762 1760 0 0
TOTAL 42252 32556 4588 0 44203 36448 7754
App Summary
Pss(KB)
------
Java Heap: 8964
Native Heap: 16212
Code: 4792
Stack: 48
Graphics: 4212
Private Other: 2916
System: 5108
TOTAL: 42252 TOTAL SWAP PSS: 0
Objects
Views: 461 ViewRootImpl: 3
AppContexts: 5 Activities: 3
Assets: 5 AssetManagers: 3
Local Binders: 43 Proxy Binders: 45
Parcel memory: 9 Parcel count: 66
Death Recipients: 7 OpenSSL Sockets: 1
WebViews: 0
SQL
MEMORY_USED: 0
PAGECACHE_OVERFLOW: 0 MALLOC_SIZE: 117
2.7 dumpsys activity
chiron:/ $ dumpsys activity -h
Activity manager dump options:
[-a] [-c] [-p PACKAGE] [-h] [WHAT] ...
WHAT may be one of:
a[ctivities]: activity stack state
r[recents]: recent activities state
b[roadcasts] [PACKAGE_NAME] [history [-s]]: broadcast state
broadcast-stats [PACKAGE_NAME]: aggregated broadcast statistics
i[ntents] [PACKAGE_NAME]: pending intent state
p[rocesses] [PACKAGE_NAME]: process state
o[om]: out of memory management
perm[issions]: URI permission grant state
prov[iders] [COMP_SPEC ...]: content provider state
provider [COMP_SPEC]: provider client-side state
s[ervices] [COMP_SPEC ...]: service state
as[sociations]: tracked app associations
settings: currently applied config settings
service [COMP_SPEC]: service client-side state
package [PACKAGE_NAME]: all state related to given package
all: dump all activities
top: dump the top activity
WHAT may also be a COMP_SPEC to dump activities.
COMP_SPEC may be a component name (com.foo/.myApp),
a partial substring in a component name, a
hex object identifier.
-a: include all available server state.
-c: include client state.
-p: limit output to given package.
--checkin: output checkin format, resetting data.
--C: output checkin format, not resetting data.
2.7.1 dumpsys activity packageName
chiron:/ $ dumpsys activity com.android.settings
TASK com.android.settings id=17600 userId=0
ACTIVITY com.android.settings/.SubSettings ef1f9cb pid=14341
Local Activity d0705dd State:
mResumed=false mStopped=true mFinished=false
mChangingConfigurations=false
mCurrentConfig={1.0 460mcc65535mnc [zh_CN] ldltr sw392dp w392dp h714dp 440dpi nrml long port finger -keyb/v/h -nav/h appBounds=Rect(0, 0 - 1080, 2030) s.111 themeChanged=0 themeChangedFlags=0}
mLoadersStarted=true
Active Fragments in 38f2fae:
#0: MiuiMyDeviceSettings{312814f #0 id=0x7f0a0290}
mFragmentId=#7f0a0290 mContainerId=#7f0a0290 mTag=null
mState=3 mIndex=0 mWho=android:fragment:0 mBackStackNesting=0
mAdded=true mRemoving=false mFromLayout=false mInLayout=false
mHidden=false mDetached=false mMenuVisible=true mHasMenu=true
mRetainInstance=false mRetaining=false mUserVisibleHint=true
mFragmentManager=FragmentManager{38f2fae in HostCallbacks{46150dc}}
mHost=android.app.Activity$HostCallbacks@46150dc
mArguments=Bundle[{:android:show_fragment_title=2131888927}]
mSavedViewState={16908290=android.view.AbsSavedState$1@a3aa5e5, 16908298=AbsListView.SavedState{da298ba selectedId=-9223372036854775808 firstId=-1 viewTop=0 position=0 height=1045 filter=null checkState=null}, 269156388=android.view.AbsSavedState$1@a3aa5e5, 269156392=android.view.AbsSavedState$1@a3aa5e5, 269156393=android.view.AbsSavedState$1@a3aa5e5, 269156430=android.view.AbsSavedState$1@a3aa5e5, 269156431=android.view.AbsSavedState$1@a3aa5e5, 269156432=com.miui.internal.widget.ActionBarView$SavedState@29fe36b, 269156433=com.miui.internal.widget.ActionBarContextView$SavedState@5209ec8, 269156434=android.view.AbsSavedState$1@a3aa5e5, 269156435=android.view.AbsSavedState$1@a3aa5e5, 2131361917=android.view.AbsSavedState$1@a3aa5e5, 2131362105=AbsListView.SavedState{5f4bb61 selectedId=-9223372036854775808 firstId=-1 viewTop=0 position=0 height=618 filter=null checkState=null}, 2131362121=android.view.AbsSavedState$1@a3aa5e5, 2131362623=android.view.AbsSavedState$1@a3aa5e5, 2131362759=android.view.AbsSavedState$1@a3aa5e5, 2131362762=ScrollView.SavedState{8518686 scrollPosition=0}, 2131363038=android.view.AbsSavedState$1@a3aa5e5, 2131363041=android.view.AbsSavedState$1@a3aa5e5, 2131363042=android.view.AbsSavedState$1@a3aa5e5, 2131363043=android.view.AbsSavedState$1@a3aa5e5}
mContainer=android.widget.FrameLayout{e1a87b V.E...... .......D 0,0-1080,2160 #7f0a0290 app:id/main_content}
mView=com.miui.internal.widget.ActionBarOverlayLayout{173d099 V.E...... ......ID 0,0-1080,2160 #100b004e miui:id/action_bar_overlay_layout}
Child FragmentManager{3574b47 in MiuiMyDeviceSettings{312814f}}:
FragmentManager misc state:
mHost=android.app.Activity$HostCallbacks@46150dc
mContainer=android.app.Fragment$1@504df74
mParent=MiuiMyDeviceSettings{312814f #0 id=0x7f0a0290}
mCurState=3 mStateSaved=true mDestroyed=false
Added Fragments:
#0: MiuiMyDeviceSettings{312814f #0 id=0x7f0a0290}
Fragments Created Menus:
#0: MiuiMyDeviceSettings{312814f #0 id=0x7f0a0290}
FragmentManager misc state:
mHost=android.app.Activity$HostCallbacks@46150dc
mContainer=android.app.Activity$HostCallbacks@46150dc
mCurState=3 mStateSaved=true mDestroyed=false
ViewRoot:
mAdded=true mRemoved=false
mConsumeBatchedInputScheduled=false
mConsumeBatchedInputImmediatelyScheduled=false
mPendingInputEventCount=0
mProcessInputEventsScheduled=false
mTraversalScheduled=false mIsAmbientMode=false
android.view.ViewRootImpl$NativePreImeInputStage: mQueueLength=0
android.view.ViewRootImpl$ImeInputStage: mQueueLength=0
android.view.ViewRootImpl$NativePostImeInputStage: mQueueLength=0
Choreographer:
mFrameScheduled=false
mLastFrameTime=90880598 (253177 ms ago)
View Hierarchy:
DecorView@5b50552[SubSettings]
com.miui.internal.widget.ActionBarOverlayLayout{fa249e V.E...... .......D 0,0-1080,2160 #100b004e miui:id/action_bar_overlay_layout}
android.widget.FrameLayout{1ddeb7f V.E...... .......D 0,0-1080,2160 #1020002 android:id/content}
android.support.v4.widget.DrawerLayout{bea1395 VFE...... .......D 0,0-1080,2160 #7f0a015e app:id/drawer_layout}
android.widget.LinearLayout{edfecaa V.E...... .......D 0,0-1080,2160 #7f0a0107 app:id/content_parent}
android.widget.Toolbar{4efc09b G.E...... ......I. 0,0-0,0 #7f0a001a app:id/action_bar}
android.widget.FrameLayout{37213e4 G.E...... ......I. 0,0-0,0 #7f0a0105 app:id/content_header_container}
android.widget.FrameLayout{ffa204d V.E...... .......D 0,0-1080,2160 #7f0a0104 app:id/content_frame}
android.widget.LinearLayout{82e8a50 V.E...... .......D 0,0-1080,2160}
Looper (main, tid 2) {6e0ac9d}
(Total messages: 0, polling=false, quitting=false)
可以看到activity/fragment/viewroot/choreographer/view hierarchy/looper等信息。
2.8 dumpsys package
chiron:/ $ dumpsys package -h
Package manager dump options:
[-h] [-f] [--checkin] [cmd] ...
--checkin: dump for a checkin
-f: print details of intent filters
-h: print this help
cmd may be one of:
l[ibraries]: list known shared libraries
f[eatures]: list device features
k[eysets]: print known keysets
r[esolvers] [activity|service|receiver|content]: dump intent resolvers
perm[issions]: dump permissions
permission [name ...]: dump declaration and use of given permission
pref[erred]: print preferred package settings
preferred-xml [--full]: print preferred package settings as xml
prov[iders]: dump content providers
p[ackages]: dump installed packages
s[hared-users]: dump shared user IDs
m[essages]: print collected runtime messages
v[erifiers]: print package verifier info
d[omain-preferred-apps]: print domains preferred apps
i[ntent-filter-verifiers]|ifv: print intent filter verifier info
version: print database version info
write: write current settings now
installs: details about install sessions
check-permission <permission> <package> [<user>]: does pkg hold perm?
dexopt: dump dexopt state
compiler-stats: dump compiler statistics
enabled-overlays: dump list of enabled overlay packages
<package.name>: info about given package
dumpsys package packageName可以查看应用对应的权限相关信息