我有一个运行JavaFX的程序,其中包含Item类对象的ListView。单击该项时,它会拉出一个单独的窗口以显示该对象的信息。每次我关闭项目窗口并打开另一个窗口时,它只会添加使用过的ram,而且我的系统相对比较紧张。当用户单击红色X时,如何将Item和ItemWindow对象取消引用?
我在ItemWindow类中的代码如下:
Parent root;
Scene scene;
stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(WindowEvent event) {
System.out.println("UR tryna close meh!");
item.close();
stage.close();
System.gc();
}
});
我在Item类中的close()方法:
public void close() {
date_purchased=null;
// price_bought=(Double) null;
// width=(Double) null;
// length=(Double) null;
// item_num=(Long) null;
palette=null;
label=null;
designer=null;
care=null;
name=null;
other=null;
picURL=null;
placeBought=null;
description=null;
layout=null;
itsAt=null;
itIs=null;
}
每当我打开一个项目并关闭它时,当我再次执行它时,它会打开更多的ram,直到我有超过一半的演出投入到该程序中。
编辑: 我拿了一个堆转储,(授予我新手),它显示了这个:
One instance of "java.nio.HeapByteBuffer" loaded by "<system class loader>" occupies 52,633,864 (87.66%) bytes. The instance is referenced by Manager.ItemWindowController @ 0xc51ea6f8 , loaded by "sun.misc.Launcher$AppClassLoader @ 0xc1f45008". The memory is accumulated in one instance of "byte[]" loaded by "<system class loader>".
Keywords
byte[]
sun.misc.Launcher$AppClassLoader @ 0xc1f45008
java.nio.HeapByteBuffer
进一步说,有一个byte []在堆上使用52,633,816,其值为&#34; ........................ ............................&#34;(等)