Re: High memory retention by QueryExecutorImpl.pgStream.encoding.decoderArray
Dave Cramer <[email protected]> Tue, 5 Mar 2019 06:01:05 -0500
| Newsgroups | gmane.comp.db.postgresql.jdbc |
|---|---|
| Message-ID | <CADK3HHJXkrzWV4VqUPPr+L9kZoGmGJgOmS4O9g1udkszTs79tg@mail.gmail.com> |
Hello, It would be useful if you could try the latest driver as that may have fixed the problem, alternatively it is also what we are developing against. As you already have a heap dump can you shed any more light on what's going on? Regards Dave Cramer [email protected] www.postgresintl.com On Mon, 4 Mar 2019 at 11:01, Atul Deopujari <[email protected]> wrote: > Hello > I am trying to figure out reasons for high memory utilization by > PgConnection object. My application occasionally runs out of memory and the > heap dump shows PgConnection as one of the largest consumers of memory. > > The heap dump shows PgConnection having a retained size of 640 MB. > We use a connection pool of 8 connections. Each connection object is > retaining about 80 MB. If I drill down into the PgConnection object, I see > that QueryExecutorImpl taking almost all memory within which it is the > pgStream.encoding.decoderArray taking all the memory. > > Not all connection objects are 80 MB all the time. Sometimes the heap dump > also shows that some connection objects are as low as 3 MB in size. > > I would like to understand under what circumstances can > pgStream.encoding.decoderArray retain 80MB. I have checked places in the > code and have ensured that we are doing resultSet.close, stmt.close and > conn.close wherever we are using them. We do have big objects in the > database. I have tried to reproduce this problem using a simple program > that queries tuples that are large text, some are even more than 500MB. I > haven't been able to see such high memory usage of QueryExecutorImpl in my > local setup. > > We use the following JDBC driver and the server > > - JDBC driver build number: 42.2.2 > - Server version: 10.4 (Ubuntu 10.4-2.pgdg14.04+1) > > > Will appreciate if someone can throw light on the reasons for excessive > object retention in QueryExecutorImpl.pgStream.encoding.decoderArray which > can help me dig this problem further. > > Thanks, > Atul >