2013-03-09 44 views
0

在日志文件中有很多堆栈跟踪是不是很糟糕?记录多个堆栈跟踪有多糟糕?

我的意思是,你可以看到是否有问题 - 你可以看到它来自哪里。

但是性能呢?具有这种日志格式的应用程序有多严重?

如何在通用记录器中使用和不使用堆栈记录之间切换系统?通过日志级别?

+1

最好记录错误的堆栈轨迹,否则你不知道发生了什么。 – 2013-03-09 11:03:33

回答

1

在日志文件中有堆栈跟踪通常会更好 - 找到问题代码会更容易。

如果您只关注堆栈跟踪生成性能 - 我写了一篇关于在Java中抛出异常需要多长时间的文章。大部分时间都被堆栈跟踪生成所消耗: Throwing an exception in Java is very slow

0

我可以假设您正在谈论挂钟时间中断触发的堆栈跟踪吗? 这些对于定位性能问题很有价值。 (如果它们包含呼叫发生的行号信息,而不仅仅是函数/方法名称,则它们更有价值。)

但是,它们只有在您可以检查它们时才有价值,而且您无法检查数百万他们,所以在接近高频率的时候没有任何价值。 几乎任何性能问题都可以在20个或更少的堆栈样本中找到,只要它们是在您关心的整个执行阶段随机抽取的。很多人觉得这个数字令人吃惊,但是here's the math

原则上,你可以使用更多的人,如果你有一个统计摘要器,沿着Zoom探查, 的线条,但你其实可以更好的手工做的,因为你的大脑可以识别浪费的处理比任何统计好。