[
https://issues.apache.org/jira/browse/JCR-1216?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12616938#action_12616938
]
Thomas Mueller commented on JCR-1216:
-------------------------------------
Another idea is: Split SessionImpl into a 'end user class' and an 'core class'
to allow garbage collection:
class SessionImpl implements Session {
private InternalJackrabbitSession session;
private Exception openStackTrace;
SessionImpl(..) {
session = ...
openStackTrace = new Exception("Stack Trace");
}
public void finalize() {
if (!closed) {
LOG.error("Session not closed", openStackTrace);
close();
}
}
}
class SessionCore implements InternalJackrabbitSession {
... basically what is now SessionImpl ...
}
Only SessionCore would be kept in the map, not SessionImpl. The
InternalJackrabbitSession interface would be simpler than the Session
interface. There could be multiple InternalJackrabbitSession implementations (a
embedded implementation, a client-server implementation, a clustering
implementation).
This split of 'user facing session' and 'internal session' is probably what we
want to achieve with the 'Jackrabbit SPI' as well.
> Unreferenced sessions should get garbage collected
> --------------------------------------------------
>
> Key: JCR-1216
> URL: https://issues.apache.org/jira/browse/JCR-1216
> Project: Jackrabbit
> Issue Type: Improvement
> Components: jackrabbit-core
> Reporter: Thomas Mueller
>
> If an application opens many sessions and doesn't close them, they are never
> garbage collected. After some time, the virtual machine will run out of
> memory. This code will run out of memory after a few thousand logins:
> Repository rep = new TransientRepository();
> for (int i = 0; ; i++) {
> rep.login(new SimpleCredentials("", new char[0]));
> }
> Using a finalizer to close SessionImpl doesn't work, because it seems there
> are references from the (hard referenced part of the cache) to the
> SessionImpl objects. Maybe it is possible to remove those references, or
> change them to weak references.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.