最近做一个实时监控系统,需要用表格显示信息,每隔一段时间刷新一下JTable,现在程序能够刷新,但是每刷新一次,内存就增大一点,导致最终出现内存溢出错误。
不知道是不是我用的方法不对?还要释放什么资源吗?当我将界面(JFrame)最小化时,内存突然就变得很小了,最大化后,又从小慢慢的增大Timer timerquality = new Timer(true);// 定时更新
timerquality.schedule(new MyMonitorTask(), 1000 * 5, 1000 * 5);// 5秒监控一次
class MyMonitorTask extends TimerTask { public void run() {
try {
EventQueue.invokeLater(new Runnable() {
public void run() {//更新JTable
                                        String[][] resultplan ...;//数据
        Object[] columnNames=...; //表头
// 表格初始化
tableModel.setDataVector(resultplan, columnNames);//tableModel为JTable的模式,全局变量
                                }
          
}); } catch (Exception ie) {
ie.printStackTrace();
}
finally{
//System.gc();
} }

解决方案 »

  1.   

    没概念,找机会看看,
    tableModel.setDataVector(resultplan, columnNames);//tableModel为JTable的模式,全局变量 
    这之前能不能把数据给清空掉
      

  2.   

    你的TABLE的大小就是行列值一直是固定不变了么?
      

  3.   

    Table里面的内容是实时更新的,需要读数据库的内容,table列数不变,我怀疑EventQueue一直都没有释放,不停的增大,不知道有没有什么方法更好的实现。
      

  4.   

    那你打印一下eventQueue的size看下呗
      

  5.   

    应该是tableModel.setDataVector(resultplan, columnNames);这的问题