NDC.remove()与NDC.clear()在多线程应用程序中首选哪个?

时间:2019-01-29 07:27:37

标签: java logging

当servlet线程完成执行时,清除org.apache.log4j.NDC的首选方法是什么?

NDC.clear()  

NDC.remove()

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这两种方法的文档似乎很清楚,所以我认为答案取决于它在做什么:

NDC.clear()-清空上下文,但如果线程可能用于其他用途,则将对象留给周围重用:

  

清除任何嵌套的诊断信息(如果有)。在可能在不同的不相关上下文中反复使用同一线程的情况下,此方法很有用。

NDC.remove()-完全删除上下文,以便回收其内存。

  

删除此线程的诊断上下文。

     

每个通过调用push(java.lang.String)创建诊断上下文的线程都应在退出之前调用此方法。否则,VM不能回收线程使用的内存。