Article View: borland.public.jbuilder.java.swing
Article #820JdbTable memory leak
From: 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?
Technical Details
Message-ID:
<7e077841.0407221539.44ca120@posting.google.com>Path:
arc1-ca.pugleaf.net!g2news1.google.com!postnews2.google.com!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Thread: 111d45,b701ec63e6a41276,start X-Google-Attributes: gid111d45,public X-Google-Language: ENGLISH,ASCII-7-bit Path: arc1-ca.pugleaf.net!g2news1.google.com!postnews2.google.com!not-for-mail From: miditto@yahoo.com (seung_shin) Newsgroups: borland.public.jbuilder.java.swing Subject: JdbTable memory leak Date: 22 Jul 2004 16:39:47 -0700 Organization: http://groups.google.com Lines: 109 Message-ID: <7e077841.0407221539.44ca120@posting.google.com> NNTP-Posting-Host: 129.193.104.172 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Trace: posting.google.com 1090539589 7206 127.0.0.1 (22 Jul 2004 23:39:49 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Thu, 22 Jul 2004 23:39:49 +0000 (UTC)