🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: borland.public.jbuilder.java.swing
1 messages
1 total messages Started by seung_shin Thu, 22 Jul 2004 23:39
JdbTable memory leak
#820
Author: seung_shin
Date: Thu, 22 Jul 2004 23:39
109 lines
3931 bytes
I am experiencing memory leak on jdbTable upon refreshing.  I have a
jdbTable tied to queryDataSet that gets refreshed every 5 sec.  The
size of application is growing even when retrieved data is unchanged
and same size.  It also grows when the dataset is empty.

I have simplified code for my application below.

public class Frame1
    extends JFrame {
  int count;
  JPanel contentPane;
  BorderLayout borderLayout1 = new BorderLayout();
  Database database1 = new Database();
  QueryDataSet queryDataSet1 = new QueryDataSet();
  JdbTable jdbTable1 = new JdbTable();
  DBDisposeMonitor dBDisposeMonitor1 = new DBDisposeMonitor();
  refresh_thread refresh_stuff = new refresh_thread();
  QueryDataSet queryDataSet2 = new QueryDataSet();

  //Construct the frame
  public Frame1() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
      queryDataSet2.open();
      refresh_stuff.start();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }

  class refresh_thread
      extends Thread {
    private volatile Thread blinker;
    private int refresh_rate = 5000;
    Thread thisThread;

    public void start() {
      try {
        blinker = new Thread(this);
        blinker.start();
      }
      catch (Exception e) {
        e.printStackTrace();
      }
    }

    void my_stop() {
      blinker = null;
    }

    public void run() {
      try {
        thisThread = Thread.currentThread();
        while (blinker == thisThread) {

          thisThread.sleep(refresh_rate);
          queryDataSet2.executeQuery();
        }
      }
      catch (InterruptedException ex) {
        ex.printStackTrace();
      
      }

    }

  }

  //Component initialization
  private void jbInit() throws Exception {
    contentPane = (JPanel)this.getContentPane();
    contentPane.setLayout(borderLayout1);
    this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    this.setSize(new Dimension(400, 300));
    this.setTitle("Frame Title");
    database1.setConnection(new
com.borland.dx.sql.dataset.ConnectionDescriptor("jdbc:polite:bft;DataDirectory=c:\\oracle\\ora90\\Mobile\\Sdk\\OLDB40\\;Database=bft;",
        "system", "manager", false,
"oracle.lite.poljdbc.POLJDBCDriver"));

    jdbTable1.setEnabled(false);
    jdbTable1.setRowSelectionAllowed(true);
    jdbTable1.setDataSet(queryDataSet2);
    dBDisposeMonitor1.setDataAwareComponentContainer(this);
    queryDataSet2.setMetaDataUpdate(MetaDataUpdate.NONE);
    queryDataSet2.setTableName("ccs_message_log");
    queryDataSet2.setQuery(new
com.borland.dx.sql.dataset.QueryDescriptor(
        database1, "SQL STATEMENT" , null, true, Load.ALL));

    contentPane.add(jdbTable1, BorderLayout.CENTER);
  }

  //Overridden so we can exit when window is closed
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      refresh_stuff.my_stop();
      queryDataSet2.closeStatement();
      queryDataSet2.empty();
      queryDataSet2.close();
      this.dispose();
    }
  }
}

Any suggestions or help?
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads