Re: Memory leak in 8.0 JDBC driver?

From: Mark Lewis <mark(dot)lewis(at)mir3(dot)com>
To: Albe Laurenz <all(at)adv(dot)magwien(dot)gv(dot)at>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Memory leak in 8.0 JDBC driver?
Date: 2005-08-11 17:55:04
Message-ID: 1123782905.14573.123.camel@archimedes
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

There are several great commercial products to track down Java memory
leaks (I can recommend YourKit). There's also an open-source profiler
called JMP (http://www.khelekore.org/jmp/) that also has some memory
profiling capabilities.

(Actually, it didn't used to, but I mentioned to the maintainer that it
would be a great feature to add, and so he did. Very responsive guy).

JMP isn't as polished and doesn't make it quite as easy to track down
elusive leaks, but still works pretty well.

Besides using a memory profiler, you should also check to make sure that
ResultSet and Statement objects are always closed. Some drivers may not
leak memory if you forget to close those, but some will. Not sure which
camp PostgreSQL falls in, but it might explain the different behavior
when testing different DB's.

-- Mark

On Thu, 2005-08-11 at 19:07 +0200, Albe Laurenz wrote:
> Before I file a bug, I'd like to ask if the problem is known or if I
> have done anything wrong.
>
> I am running a database stress test against a PostgreSQL 8.0.3 database
> on a Linux machine.
> The test program runs on a Windows 2000 client via JDBC, it starts
> several threads, each
> of which opens a database connection and issues random statements
> against the database
> until the program is interrupted.
>
> After about 2 hours, the program always dies with an OutOfMemoryError.
>
> I have tried both JRE 1.4.2_02 and 1.5.0_04 from Sun.
> I would suspect a programming error on my side, except the same program
> on the same machine
> runs for days without problems if I run it against other databases
> (Derby, Firebird, MySql,
> Oracle, MaxDB).
>
> I have got the JDBC3 driver 8.0 Build 312 from
> http://jdbc.postgresql.org/download.html,
> and I have also tried downloading and building from source.
> No matter what I do, memory runs out.
>
> - Should I report this as a bug?
> - I did not want to spam the list with the source of my test program,
> but I'd happily do
> so if you think it would help.
> - Do you have any hints as to how I could debug the problem myself? Can
> you recommend a
> memory profiler?
>
> Thank you,
> Laurenz Albe
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: Don't 'kill -9' the postmaster

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Rob Kirkbride 2005-08-11 18:09:48 Bug with blobs?
Previous Message Nanu Ram 2005-08-11 17:43:28 Re: Memory leak in 8.0 JDBC driver?