didi / didi/booster

线程替换集成成功后一直是替换失败的

Open
#481 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Kotlin
Stars
5.1k
Forks
591
PR merge metrics
No merged PRs in 30d

Description

集成4.16.3版本
线程替换后,有build日志输出,build文件里也有替换的包。
但是实际监控线程发现根本没有被替换。只是改名而已。
查看替换线程的代码。发现里面的替换逻辑是名字,并不是线程。
// Timer(String)
"(Ljava/lang/String;)V" -> {
method.instructions.apply {
// ..., name => ..., name, prefix
insertBefore(init, LdcInsnNode(makeThreadName(klass.className)))
// ..., name, prefix => ..., name
insertBefore(init, MethodInsnNode(Opcodes.INVOKESTATIC, SHADOW_THREAD, "makeThreadName", "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;", false))
}
}

执行了以后实际的线程的类在哪里创建的还是在哪里创建,所以在监控平台上看线程数量和线程名,以及线程状态都没有被优化。

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.