RE: Re: [ADMIN] High memory usage [PATCH]
От | Rainer Mager |
---|---|
Тема | RE: Re: [ADMIN] High memory usage [PATCH] |
Дата | |
Msg-id | NEBBJBCAFMMNIHGDLFKGIELIEFAA.rmager@vgkk.com обсуждение исходный текст |
Ответ на | Re: Re: [ADMIN] High memory usage [PATCH] ("Dave Cramer" <Dave@micro-automation.net>) |
Ответы |
Re: Re: [ADMIN] High memory usage [PATCH]
RE: Re: [ADMIN] High memory usage [PATCH] |
Список | pgsql-jdbc |
Good questions, I'll answer what I can... > 1) what is the problem that this is trying to solve, I assume from the > subject that it is some sort of high memory usage? Yes it involves memory usage and a memory leak. Basically, the way the code was before the patch, each instantiation of a PreparedStatement created 2 new ThreadLocal objects. According to Sun's Javadocs, these objects are not freed until the thread is completed. For a single thread app or main thread of an application (in our case a server) the thread NEVER goes away. Therefore these ThreadLocal objects just keep adding up and using memory, forever. The patch removes the use of these ThreadLocals. > 2) I am trying to understand how a statement would ever be used > by more than > one thread at a time? I would think that it would be impossible to share > statements across threads. This I can't really answer. The code appeared to be written to be thread safe so I attempted to continue that. Whether thread safe for a Statement is necessary or not I can't directly say. Although, I agree with you, I can't imagine a need to use a single Statement in multiple threads. > 3) The double locking method used is alledgedly unsafe on SMP machines > http://www.javaworld.com/javaworld/jw-02-2001/jw-0209-double_p.html. 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. > Dave --Rainer
В списке pgsql-jdbc по дате отправления: