- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在一个日志系统中,每条日志的输出都是由一个辅助类用这样的方法完成的
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/
有点不正统的情况 - 基本上我有线程 A 监视线程 B。如果线程 A 检测到线程 B 负责的周期性任务之一(线程 B 不是 ThreadPoolExecutor 的一部分,它是MINA 的线程之一)已
在一个日志系统中,每条日志的输出都是由一个辅助类用这样的方法完成的 public void debug(String message) { Logger logger = Logger.get
使用 Delphi 7,如何从 Exception 中获取表示堆栈跟踪的字符串? try SomethingDodgy(); except on E:Exception do begin
我无法理解这段代码。我很了解语法,但为什么使用 getStackTrace() 和 setStackTrace() ?我的意思是我想知道它在现实世界场景中的实现是什么?即,这段代码的期望输出是什么?
出于日志记录的目的,我创建了一个方法 logTitle(),它打印出 TestNG 测试的调用方法名称。示例代码如下。 @Test public void test1() throws Excepti
本文整理了Java中org.jboss.wsf.spi.WSFException.getStackTrace()方法的一些代码示例,展示了WSFException.getStackTrace()的具体
我目前正在尝试为包验证方法编写 JUnit4 测试。 该方法只是检查调用是否来自正确的包,以确保它不是从外部调用的。方法和RegEx本身可以工作,但是为了安全起见,我想添加一个单元测试。 简单来说,这
这是对 What happens when there's insufficient memory to throw an OutOfMemoryError? 的后续问题 我的问题如下:如果预先分配了
我正在使用 new Throwable().getStackTrace()[1].getMethodName() 一些开发人员认为它价格昂贵。这种方法的成本在哪里?我们应该使用它吗?如果是,那么应该注
我正在使用较旧的 Java 版本进行开发,该版本没有 getStackTrace() 方法。有一个 printStackTrace 方法,但它没有打印在我想要的地方。 有没有办法提取Exception
我是一名优秀的程序员,十分优秀!