gpt4 book ai didi

java - Thread.getStackTrace() 有多贵?

转载 作者:太空狗 更新时间:2023-10-29 22:39:09 43 4
gpt4 key购买 nike

在一个日志系统中,每条日志的输出都是由一个辅助类用这样的方法完成的

public void debug(String message) {
Logger logger = Logger.getLogger(getCallingClass());
logger.debug(message);
}
...
public Class getCallingClass() {
/*
Calls Thread.getStackTrace() and back traces until the class on the stack trace
!= this.getClass().
*/
return classFound;
}

运行它的成本有多高?它是否会对性能产生重大影响?

最佳答案

现在使用 JDK 9 和 10,您可以使用 StackWalker,这不是一个昂贵的调用。

private void invoke006() {
var stack = StackWalker.getInstance(StackWalker.Option.SHOW_HIDDEN_FRAMES).walk((s) -> s.collect(Collectors.toList()));
stack.forEach(stackFrame -> {
if (stackFrame.getMethodName().equals("masterInvoker")) {
System.err.println("master called !!");
System.err.println(StackWalker.getInstance().walk((s) -> s.collect(Collectors.toList())).get(0).getMethodName() + ", line: " + StackWalker.getInstance().walk((s) -> s.collect(Collectors.toList())).get(0).getLineNumber());
}
});
}

关于java - Thread.getStackTrace() 有多贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2347828/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com