Skip site navigation (1) Skip section navigation (2)

Re: [ADMIN] High memory usage [PATCH]

From: Barry Lind <barry(at)xythos(dot)com>
To: pgsql-patches(at)postgresql(dot)org
Cc: "'PostgreSQL jdbc list'" <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: [ADMIN] High memory usage [PATCH]
Date: 2001-06-25 15:41:52
Message-ID: 3B375BC0.9060201@xythos.com (view raw or flat)
Thread:
Lists: pgsql-adminpgsql-jdbcpgsql-patches

Barry Lind wrote:

> Since this patch got applied before I got around to commenting on it, I 
> have submitted a new patch to address my issues with the original patch.
> 
> The problem with the patch as applied is that is always creates the 
> SimpleDateFormat objects in the constructor of the PreparedStatement 
> regardless of whether or not they will ever be used in the 
> PreparedStatement.  I have reverted back to the old behavior that only 
> creates them if necessary in the setDate and setTimestamp methods.
> 
> I also removed the close() method.  It's only purpose was to free these 
> two SimpleDateFormat objects.  I think it is much better to leave these 
> two objects cached on the thread so that other PreparedStatements can 
> use them.  (This was the intention of a patch I submitted back in 
> February where I was trying to remove as many object creations as 
> possible to improve performance.  That patch as written needed to get 
> pulled because of the problem that SimpleDataFormat objects are not 
> thread safe.  Peter then added the ThreadLocal code to try to solve the 
> performance problem, but introduced the memory leak that originated this 
> email thread.)  I think the cost of at most two SimpleDateFormat objects 
> being cached on each thead is worth the benefits of less object creation 
> and subsequent garbage collection.
> 
> thanks,
> --Barry
> 
> 
> Bruce Momjian wrote:
> 
>> Patch applied.  Thanks.
>>
>>
>>> Here is a patch which inspired by Michael Stephens that should work
>>>
>>> Dave
>>>
>>>
>>> -----Original Message-----
>>> From: pgsql-jdbc-owner(at)postgresql(dot)org
>>> [mailto:pgsql-jdbc-owner(at)postgresql(dot)org] On Behalf Of Gunnar R?nning
>>> Sent: June 22, 2001 10:14 AM
>>> To: Rainer Mager
>>> Cc: Dave Cramer; Bruce Momjian; PostgreSQL jdbc list
>>> Subject: Re: [JDBC] Re: [ADMIN] High memory usage [PATCH]
>>>
>>> * "Rainer Mager" <rmager(at)vgkk(dot)com> wrote:
>>> |
>>>
>>> | Interesting. I wasn't aware of this. If question #2 is answered such
>>> that
>>> | thread safe isn't necessary, then this problem goes away pretty
>>> easily. If
>>> | thread safety is needed then this would have to be rewritten, I can
>>> look
>>> | into doing this if you like.
>>>
>>> Thread safety is required by the spec. Do you have "JDBC API tutorial
>>> and reference, 2 ed." from Addison Wesley ? This book contains a 
>>> section for
>>>
>>> JDBC driver writers and explains this issue.
>>>
>>> regards,
>>>        Gunnar
>>>
>>> -- 
>>> Gunnar R?nning - gunnar(at)polygnosis(dot)com
>>> Senior Consultant, Polygnosis AS, http://www.polygnosis.com/
>>>
>>> ---------------------------(end of broadcast)---------------------------
>>> TIP 1: subscribe and unsubscribe commands go to majordomo(at)postgresql(dot)org
>>>
>>>
>>
>> [ Attachment, skipping... ]
>>
>>
> 
> 
> ------------------------------------------------------------------------
> 
> *** ./interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java.orig	Sun Jun 24 21:05:29 2001
> --- ./interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java	Sun Jun 24 21:13:15 2001
> ***************
> *** 65,78 ****
>   		this.sql = sql;
>   		this.connection = connection;
>   	
> - 		// might just as well create it here, so we don't take the hit later
> - 
> -             	SimpleDateFormat df = new SimpleDateFormat("''yyyy-MM-dd''");
> -             	tl_df.set(df);
> - 		
> -             	df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
> -             	tl_tsdf.set(df);
> -           
>   		for (i = 0; i < sql.length(); ++i)
>   		{
>   			int c = sql.charAt(i);
> --- 65,70 ----
> ***************
> *** 95,111 ****
>   			templateStrings[i] = (String)v.elementAt(i);
>   	}
>   
> -         /**
> -          * New in 7.1 - overides Statement.close() to dispose of a few local objects
> -          */
> -         public void close() throws SQLException
> - 	 {
> -           // free the ThreadLocal caches
> -           tl_df.set(null);
> - 	  tl_tsdf.set(null);
> -           super.close();
> -         }
> - 
>   	/**
>   	 * A Prepared SQL query is executed and its ResultSet is returned
>   	 *
> --- 87,92 ----
> ***************
> *** 343,348 ****
> --- 324,333 ----
>   	public void setDate(int parameterIndex, java.sql.Date x) throws SQLException
>   	{
>             SimpleDateFormat df = (SimpleDateFormat) tl_df.get();
> +           if(df==null) {
> +             df = new SimpleDateFormat("''yyyy-MM-dd''");
> +             tl_df.set(df);
> +           }
>   
>   	  set(parameterIndex, df.format(x));
>   
> ***************
> *** 382,387 ****
> --- 367,376 ----
>   	public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException
>           {
>             SimpleDateFormat df = (SimpleDateFormat) tl_tsdf.get();
> +           if(df==null) {
> +             df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
> +             tl_tsdf.set(df);
> +           }
>             df.setTimeZone(TimeZone.getTimeZone("GMT"));
>   
>             // Use the shared StringBuffer
> 
> patch.txt
> 
> Content-Type:
> 
> text/plain
> Content-Encoding:
> 
> 7bit
> 
> 



In response to

Responses

pgsql-admin by date

Next:From: Barry LindDate: 2001-06-25 17:41:31
Subject: Re: RE: [ADMIN] High memory usage [PATCH]
Previous:From: Barry LindDate: 2001-06-25 15:39:22
Subject: Re: [ADMIN] High memory usage [PATCH]

pgsql-patches by date

Next:From: Peter EisentrautDate: 2001-06-25 16:14:59
Subject: Re: AW: AW: AW: [PATCH] Re: Setuid functions
Previous:From: Barry LindDate: 2001-06-25 15:39:22
Subject: Re: [ADMIN] High memory usage [PATCH]

pgsql-jdbc by date

Next:From: Barry LindDate: 2001-06-25 15:42:24
Subject: Re: Fixing SQLException error codes.
Previous:From: Barry LindDate: 2001-06-25 15:39:22
Subject: Re: [ADMIN] High memory usage [PATCH]

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group