在LogManager的getLogger()方法描述中,写道以下内容:
“(...)与字符串名称相关联的记录器如果没有对记录器的强引用,则可以随时被垃圾回收。调用此方法的调用者必须检查返回值是否为null,以便正确处理记录器已被垃圾回收的情况。”
既然LogManager必须保留所有记录器的引用才能解析记录器的名称,那么GC如何擦除记录器呢?
Java API允许这种情况似乎有点奇怪,即在我的应用程序启动时创建和设置记录器,但忘记保留引用,然后稍后如果我使用Logger.getLogger('someName'),我将得到新的默认记录器而不是我设置的记录器。
“(...)与字符串名称相关联的记录器如果没有对记录器的强引用,则可以随时被垃圾回收。调用此方法的调用者必须检查返回值是否为null,以便正确处理记录器已被垃圾回收的情况。”
既然LogManager必须保留所有记录器的引用才能解析记录器的名称,那么GC如何擦除记录器呢?
Java API允许这种情况似乎有点奇怪,即在我的应用程序启动时创建和设置记录器,但忘记保留引用,然后稍后如果我使用Logger.getLogger('someName'),我将得到新的默认记录器而不是我设置的记录器。