在LogManager的getLogger()方法的描述中,它写成如下:
"(...)如果没有对Logger的强引用,则可以随时对与String名称相关联的记录器进行垃圾回收.此方法的调用者必须检查null的返回值,以便正确处理记录器已被垃圾收集."
GC是如何可以擦除记录器的,因为LogManager必须保留对所有记录器的所有引用才能解析记录器的名称?
是不是有点奇怪,Java API允许一种情况,在我的应用程序的开始我创建和设置我的记录器但忘记保持引用,然后如果我使用Logger.getLogger('someName')我会得到新的,默认我设置的Loggers的一个instad?
我使用JFrame创建并显示一个窗口,并将其设置为非常基本的属性.
public FrameVertices( String sTitle, Graph mMap, int iMul ) {
super( sTitle );
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
setSize ( 300, 300 );
setLocation ( 600, 300 );
setVisible ( true);
this.iMul = iMul;
this.gGraph = mMap;
}
Run Code Online (Sandbox Code Playgroud)
然后我使用paint()方法在窗口内绘制一些东西.
问题是,当其他一些窗户覆盖我JFrame
然后揭开它时,它的内容JFrame
不会被重新绘制 - 除非我调整大小或最小/最大JFrame
.
我错过了什么吗?