You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "shishir sharma (JIRA)" <ji...@apache.org> on 2009/09/02 19:16:32 UTC
[jira] Updated: (TRANSACTION-33) Possible Memory Leak
[ https://issues.apache.org/jira/browse/TRANSACTION-33?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
shishir sharma updated TRANSACTION-33:
--------------------------------------
Attachment: CommonTransactions_2.0.patch
Suggested patch file for memory leak
> Possible Memory Leak
> --------------------
>
> Key: TRANSACTION-33
> URL: https://issues.apache.org/jira/browse/TRANSACTION-33
> Project: Commons Transaction
> Issue Type: Bug
> Affects Versions: 2.0
> Environment: ubuntu hardy heron, tomcat, java 1.6
> Reporter: shishir sharma
> Priority: Blocker
> Fix For: 2.0
>
> Attachments: CommonTransactions_2.0.patch
>
> Original Estimate: 24h
> Remaining Estimate: 24h
>
> I have been using 2.0 version of library available mainly for hierarchical locking issues. Apart from few other minor issues, it has been working pretty fine. I recently observed heap size issues with my environments and while investigating that I found that my piece of code using DefaultHierarchicalManager.java is among the top three heap consumers at that time.
> Upon analysing the heap a bit more (and going through the code of transaction 2.0), I found that we are not emptying a hashmap in RWLockManager.java. As a result, it holds onto references and corresponding objects are never garbage collected. Please review the following patch and let me know if it is ok or not.
> Thanks,
> Shishir
> toshishirsharma[AT]gmail[DOT]com
> ===== patch start =====
> diff -rub branches/TRANSACTION_2/src/java/org/apache/commons/transaction/locking/RWLockManager.java branches_mod/TRANSACTION_2/src/java/org/apache/commons/transaction/locking/RWLockManager.java
> --- branches/TRANSACTION_2/src/java/org/apache/commons/transaction/locking/RWLockManager.java 2009-09-01 20:05:29.000000000 -0500
> +++ branches_mod/TRANSACTION_2/src/java/org/apache/commons/transaction/locking/RWLockManager.java 2009-09-01 21:13:35.000000000 -0500
> @@ -66,6 +66,7 @@
> removeUnsuedLocks();
> locksForThreads.remove(Thread.currentThread());
> + effectiveGlobalTimeouts.remove(Thread.currentThread());
> }
> protected void removeUnsuedLocks() {
> diff -rub branches/TRANSACTION_2/src/java/org/apache/commons/transaction/locking/SimpleLockManager.java branches_mod/TRANSACTION_2/src/java/org/apache/commons/transaction/locking/SimpleLockManager.java
> --- branches/TRANSACTION_2/src/java/org/apache/commons/transaction/locking/SimpleLockManager.java 2009-09-01 20:05:29.000000000 -0500
> +++ branches_mod/TRANSACTION_2/src/java/org/apache/commons/transaction/locking/SimpleLockManager.java 2009-09-01 21:13:05.000000000 -0500
> @@ -108,6 +108,7 @@
> }
> locksForThreads.remove(Thread.currentThread());
> + effectiveGlobalTimeouts.remove(Thread.currentThread());
> }
> }
> ===== patch end =====
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.