markzhai / markzhai/AndroidPerformanceMonitor
出现堆栈不均匀或丢失
Open
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 6.7k
- Forks
- 1k
- PR merge metrics
- No merged PRs in 30d
Description
比如这个日志:
**********************
2017-11-14 22:51:21(write log time)
qua = unknown
versionName = 1.0
versionCode = 10127
imei = null
uid = uid
network = unknown
model = T68
api-level = 23 6.0.1
cpu-core = 4
process = com.evideostb.kdroid.app.demand
freeMemory = 168992
totalMemory = 787472
time = 5692
thread-time = 130
time-start = 11-14 22:51:13.247
time-end = 11-14 22:51:18.939
cpu-busy = false
cpu-rate = 11-14 21:10:36.770 cpu:62% app:8596% [user:152940% system:135920% ioWait:29926% ]
11-14 21:29:24.307 cpu:95% app:1% [user:31% system:20% ioWait:42% ]
11-14 21:48:01.918 cpu:73% app:0% [user:18% system:21% ioWait:33% ]
11-14 22:50:01.742 cpu:80% app:0% [user:4% system:11% ioWait:62% ]
11-14 22:50:02.744 cpu:63% app:0% [user:0% system:5% ioWait:57% ]
11-14 22:51:19.084 cpu:75% app:0% [user:13% system:17% ioWait:42% ]
stack = 11-14 22:51:15.672
java.lang.String.hashCode(String.java:615)
java.lang.String.equals(String.java:439)
android.content.res.ColorStateList.createFromXmlInner(ColorStateList.java:216)
android.content.res.ColorStateList.createFromXml(ColorStateList.java:201)
android.content.res.Resources.loadColorStateListForCookie(Resources.java:2746)
android.content.res.Resources.loadColorStateList(Resources.java:2699)
android.content.res.TypedArray.getColor(TypedArray.java:439)
android.widget.TextView.<init>(TextView.java:738)
android.widget.TextView.<init>(TextView.java:671)
android.widget.TextView.<init>(TextView.java:667)
java.lang.reflect.Constructor.newInstance(Native Method)
android.view.LayoutInflater.createView(LayoutInflater.java:619)
com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
android.view.LayoutInflater.onCreateView(LayoutInflater.java:694)
android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:762)
android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
android.view.LayoutInflater.inflate(LayoutInflater.java:515)
android.view.LayoutInflater.inflate(LayoutInflater.java:423)
com.evideostb.kdroid.app.demand.dialog.KgoSearchDialog$SingerAdapter.onCreateViewHolder(KgoSearchDialog.java:638)
com.evideostb.kdroid.app.demand.dialog.KgoSearchDialog$SingerAdapter.onCreateViewHolder(KgoSearchDialog.java:629)
android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:5223)
android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4449)
android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4359)
android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1961)
android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:438)
android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1333)
android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:562)
android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:171)
android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2900)
android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3071)
android.view.View.layout(View.java:16658)
android.view.ViewGroup.layout(ViewGroup.java:5437)
android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
android.view.View.layout(View.java:16658)
android.view.ViewGroup.layout(ViewGroup.java:5437)
android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
android.view.View.layout(View.java:16658)
android.view.ViewGroup.layout(ViewGroup.java:5437)
android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
android.widget.FrameLayout.onLayout(FrameLayout.java:273)
android.view.View.layout(View.java:16658)
android.view.ViewGroup.layout(ViewGroup.java:5437)
android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
android.widget.FrameLayout.onLayout(FrameLayout.java:273)
android.view.View.layout(View.java:16658)
android.view.ViewGroup.layout(ViewGroup.java:5437)
android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
android.widget.FrameLayout.onLayout(FrameLayout.java:273)
com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
android.view.View.layout(View.java:16658)
android.view.ViewGroup.layout(ViewGroup.java:5437)
android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
android.view.Choreographer.doCallbacks(Choreographer.java:670)
android.view.Choreographer.doFrame(Choreographer.java:606)
android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
android.os.Handler.handleCallback(Handler.java:739)
android.os.Handler.dispatchMessage(Handler.java:95)
android.os.Looper.loop(Looper.java:148)
android.app.ActivityThread.main(ActivityThread.java:5453)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
11-14 22:51:18.861
android.os.Parcel.obtain(Parcel.java:317)
android.view.IWindowSession$Stub$Proxy.finishDrawing(IWindowSession.java:1083)
android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2472)
android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2067)
android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
android.view.Choreographer.doCallbacks(Choreographer.java:670)
android.view.Choreographer.doFrame(Choreographer.java:606)
android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
android.os.Handler.handleCallback(Handler.java:739)
android.os.Handler.dispatchMessage(Handler.java:95)
android.os.Looper.loop(Looper.java:148)
android.app.ActivityThread.main(ActivityThread.java:5453)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
配置provideBlockThreshold=provideDumpInterval=1000ms,调用耗时5.6s,预期能看见5个堆栈,但是这里只看到了2个,感觉有丢失。
是不是因为CpuSampler在打开/proc文件时有可能被卡住?
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by examining the CpuSampler behavior while opening /proc and reproduce the reported configuration: provideBlockThreshold=provideDumpInterval=1000ms with a 5.6-second call. Compare the expected five stack samples with the two shown in the report; done means identifying whether sampling is blocked or lost and documenting or fixing the cause.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, java
- Domain
- performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100