我的程序里有很多JLabel 定时显示几秒钟,然后就不再用了,用C的话可以析构,用java会不会大量占据内存?
我是否需要自己把他们加到一个链表里,然后时不时去清空,还是用完可以不管?
还有showMessageDialog
public class TimedLabel {
JLabel jl = new JLabel();
public TimedLabel(JPanel jp,int locx,int locy,String alt,int seconds)
{
jl.setText(alt);
jl.setLocation(locx,locy);
jl.setSize(alt.length()*10,20);
jl.setVisible(true);
jp.add(jl);
Timer timer = new Timer(seconds*1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jl.setVisible(false);
}
});
timer.start();
}
}
import javax.swing.JOptionPane;
public class Jmsgbox extends JOptionPane{
public Jmsgbox(String messageText)
{
showMessageDialog(this, messageText);
}
}
------解决方案--------------------
我觉得可以不用管
------解决方案--------------------
把这些jl从jp里面remove掉,就可以不用管了,如果在别的地方也没有被引用,会被回收。如果只是设置setVisible(false),那么不会被回收。
------解决方案--------------------
不需要管吧,自己会清理的
------解决方案--------------------
可以考虑重复利用这些label,就是享元模式,这样可以降低内存的浪费,不必要的对象创建,提高效率。
------解决方案--------------------
你用的是jl.setVisible(false),这个对象一直会存在的,只是影藏了而已。如果不需要了你要remove掉。