打印主线程堆栈的问题
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 32/100
- Issue 类型
- 缺陷
- 描述清晰度
- 需要澄清
- 活跃度
- 停滞
- 领域
- mobile, performance
调研方向
从 StackSampler.doSample 开始,尤其关注对 mCurrentThread.getStackTrace() 的调用,并在采样前加入 10 秒的休眠来复现报告的案例。将捕获的堆栈与主线程被阻塞的位置进行比较。当 issue 所关注的报告堆栈是否准确这一问题得到验证,且观察到的故障有明确的解决方案时,即视为完成。
由索引模型根据 Issue 内容生成。
描述
有一个问题:
关于打印主线程堆栈的实现:
StackSampler 的 doSimple 实现如下
`protected void doSample() {
StringBuilder stringBuilder = new StringBuilder();
for (StackTraceElement stackTraceElement : mCurrentThread.getStackTrace()) {
stringBuilder
.append(stackTraceElement.toString())
.append(BlockInfo.SEPARATOR);
}
Log.e(TAG, stringBuilder.toString());
synchronized (sStackMap) {
if (sStackMap.size() == mMaxEntryCount && mMaxEntryCount > 0) {
sStackMap.remove(sStackMap.keySet().iterator().next());
}
sStackMap.put(System.currentTimeMillis(), stringBuilder.toString());
}
}`
当前只是直接 通过调用 mCurrentThread 的 getStackTrace 来获取堆栈信息,但是这个时候如果在这个方法之前有耗时的操作(比如直接sleep(10 * 1000)),那么再去获取主线程堆栈信息的时候是不是可能出现获取的堆栈不是真正出问题的地方?
在我自己测试的情况下,已经是无法正常打印堆栈信息。
- 主要语言
- Java
- 星标
- 6.7k
- 派生
- 1k
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
markzhai/AndroidPerformanceMonitor 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 65/100
markzhai/AndroidPerformanceMonitor#144 · 4 条评论 · 1 个 reaction ·
-
难度 3/5 1-2 天 新手友好度 52/100
markzhai/AndroidPerformanceMonitor#154 · 3 条评论 ·
-
难度 5/5 一周以上 新手友好度 5/100
markzhai/AndroidPerformanceMonitor#153 · 5 条评论 · 1 个 reaction ·
-
这个库希望有人能维护一下未关闭
难度 5/5 一周以上 新手友好度 15/100
markzhai/AndroidPerformanceMonitor#149 · 5 条评论 · 3 个 reaction ·
-
如何保证捕获卡顿堆栈的准确性?未关闭
难度 4/5 3-5 天 新手友好度 25/100
查看 markzhai/AndroidPerformanceMonitor 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 75/100
modelcontextprotocol/java-sdk#1174 · 1 个 reaction ·
维护者通常 2 天内回复
-
module: core
难度 2/5 1-3 小时 新手友好度 77/100
bigbluebutton/bigbluebutton#26028 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 65/100
MetricsHub/metricshub-community#1390 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 86/100
apache/rocketmq-dashboard#6331 ·
维护者通常 5 天内回复
-
status: team-only type: dependency-upgrade
难度 2/5 1-3 小时 新手友好度 68/100
spring-projects/spring-boot#52143 · 1 条评论 ·
维护者通常 1 天内回复