Viewing Issue Advanced Details
[ Jump to Notes ]
|
[ View Simple ]
[ Issue History ]
[ Print ]
|
ID |
Category |
Severity |
Reproducibility |
Date Submitted |
Last Update |
0005647 |
[Resin] |
crash |
sometimes |
02-03-14 07:15 |
05-05-14 10:26 |
|
Reporter |
mate |
View Status |
public |
|
Assigned To |
ferg |
Priority |
normal |
Resolution |
fixed |
Platform |
|
Status |
closed |
|
OS |
|
Projection |
none |
|
OS Version |
|
ETA |
none |
Fixed in Version |
4.0.40 |
Product Version |
4.0.37 |
|
Product Build |
|
|
Summary |
0005647: ConnectionPool can cause memory leaks |
Description |
com.caucho.env.dbpool.ConnectionPool + suspended transactions can cause classloader leaks and eventually OutOfMemoryError: PermGen space.
Reference chain is as follows: Thread -> ThreadLocalMap -[Entry for key com.caucho.transaction.TransactionManagerImpl._threadTransaction]-> TransactionImpl -> UserTransactionSuspendState -> ManagedPoolItem -> ConnectionPool -> ClassLoader
Suggested ways to fix this is to set _suspendState to null in TransactionImpl.resume()
Alternative solutions would include unset ConnectionPool._classLoader on all pools of an application when undeploying and calling remove on TransactionManagerImpl._threadTransaction before returning Thread to thread pool (will only cover pooled threads). |
Steps To Reproduce |
|
Additional Information |
|
|
Attached Files |
|
|