agora inbox for pljava-dev@postgresql.org  
help / color / mirror / Atom feed
Subject: [Pljava-dev] out of memory
Date: Wed, 19 Apr 2006 09:07:42 +0200
Message-ID: <4445E1BE.8060002@lewczuk.com> (raw)
In-Reply-To: <443C9BF2.2070302@tada.se>
References: <e1fn29$od1$1@sea.gmane.org>
	<443B63F0.4050803@tada.se>
	<443BC400.4030806@lewczuk.com>
	<443BCC32.2090306@tada.se>
	<443C994F.6060308@lewczuk.com>
	<443C9BF2.2070302@tada.se>

Thomas Hallgren napisa?(a):
> Marek,
> You definitely have a memory leak somewhere. The process consumes 2.5 
> Gigabytes when it seems to hang. From the looks of it, it doesn't 
> actually hang but it is very, very slow (consumes 0.6 %CPU). Your 
> main-thread may well hang at this point, the rest of the activity might 
> be a struggling garbage collector. Is there any chance that you have a 
> huge map or array building up somewhere?
There are no maps at all, but I find the part of the code which (when 
enabled) leads to memory leak.

				// insert into regional registrations table
				{
					Statement s = connection.createStatement();
					
					ResultSet r = s.executeQuery("SELECT oCarTypeId FROM 
samarapp_data.sapp_cda_pl_cep_rre WHERE oCarTypeId = " + co + " AND 
nCarTypeId = " + cn + " AND nMakeId = " + mk + " AND nModelId = " + mo + 
" AND nDistrictW = " + rw + " AND nDistrictP = " + rp + " AND 
productionYear = " + result.getInt("productionyear") + " AND 
registrationYear = " + result.getInt("registrationyear"));
					
					if (r.next() == false) s.execute("INSERT INTO 
samarapp_data.sapp_cda_pl_cep_rre (oCarTypeId, nCarTypeId, nMakeId, 
nModelId, nDistrictW, nDistrictP, productionYear, registrationYear, 
registrationMonth" + result.getInt("registrationmonth") + ") VALUES (" + 
co + "," + cn + "," + mk + "," + mo + "," + rw + "," + rp + "," + 
result.getInt("productionyear") + "," + 
result.getInt("registrationyear") + "," + 
result.getInt("registrationamount") + ")");
					
					else s.execute("UPDATE samarapp_data.sapp_cda_pl_cep_rre SET 
registrationMonth" + result.getInt("registrationmonth") + "=" + 
result.getInt("registrationamount") + " WHERE oCarTypeId = " + co + " 
AND nCarTypeId = " + cn + " AND nMakeId = " + mk + " AND nModelId = " + 
mo + " AND nDistrictW = " + rw + " AND nDistrictP = " + rp + " AND 
productionYear = " + result.getInt("productionyear") + " AND 
registrationYear = " + result.getInt("registrationyear"));
					
					r.close();
					
					s.close();
				}

I thought that change from "execute" to "executeUpdate" will fix this 
but unfortunatelly it didn't. Would you like to see the full source code ?

> Not normally no. As I said previously, I'm trying to eliminate possible 
> causes for the leak. The more I know about your code and your setup, the 
> better the prognoses that I find something. Ideally, I'd like to look at 
> your function. You still keep your configuration a secret. What system 
> are you using? PostgreSQL version, OS version, Java version?
PostgreSQL 8.1.0, Linux Debian, Java JDK1.5.0_04

 




view thread (12+ messages)  latest in thread

Message-ID: <4445E1BE.8060002@lewczuk.com>
Permalink:  ../4445E1BE.8060002@lewczuk.com/
Also on:    postgresql.org/message-id/4445E1BE.8060002@lewczuk.com

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pljava-dev@postgresql.org
  Subject: Re: [Pljava-dev] out of memory
  In-Reply-To: <4445E1BE.8060002@lewczuk.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox