java - Logger引起的内存泄漏

标签 java logging memory-leaks classloader

read以下代码会导致内存泄漏,因为 Level 类从类加载器外部持有对 CUSTOMLEVEL 成员的引用:

public class LeakServlet extends HttpServlet {
  private static final String STATICNAME = "This leaks!";
  private static final Level CUSTOMLEVEL = new Level("test", 550) {}; // anon class!

  protected void doGet(HttpServletRequest request, HttpServletResponse response)
                 throws ServletException, IOException {
      Logger.getLogger("test").log(CUSTOMLEVEL, "doGet called");
  }
}

问题是 Level 类是如何在这个特定的类加载器之外加载的?
我可以在类似行为的 Java API 中有一些其他实例吗?

最佳答案

有很多类加载器泄漏的来源:This part关于这个问题的博客系列的一部分,列举了一些罪魁祸首。

关于java - Logger引起的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16769074/

相关文章:

java - Guice注入(inject): parameter not explicity bound

javascript - 扩展 Error 对象时是否需要 super(originalError)?

android - 调用改造 2 时避免内存泄漏

c - sbrk - Valgrind 不报告内存泄漏

android - 哪些 Android 工具和方法最适合查找内存/资源泄漏?

来自扩展的 Java 类型转换

java - 简单的记录器,怎么做?

java - 为什么我的等待线程即使收到通知也没有醒来?

node.js - 在 Express.js 中使用 Winston 进行日志记录 - 如何针对不同的环境进行配置?

android - 获取应用程序崩溃和 ANR 的日志?