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
Author: seung_shin
Date: Thu, 22 Jul 2004 23:39
Date: Thu, 22 Jul 2004 23:39
109 lines
3931 bytes
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