9

Level クラスが Classloader の外部から 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 内に他のインスタンスをいくつか持つことはできますか?

4

1 に答える 1