https://issues.apache.org/jira/browse/WICKET-1679


Matej Knopp-2 wrote:
> 
> Hi,
> 
> about not removing the entries, can you please create jira issue? I
> will try to look into it ASAP.
> 
> -Matej
> 
> On Mon, Jun 2, 2008 at 11:38 AM, Stefan Fußenegger
> <[EMAIL PROTECTED]> wrote:
>>
>> Recently, I had 2 memory related crashes of my Wicket app. Thanks to the
>> priceless -XX:+HeapDumpOnOutOfMemoryError option, I had a heap dump to
>> look
>> at (one crash was due to a GC overhead exception, so no dump there). One
>> thing that immediately attracted my attention was that there were 116.917
>> instances of
>> org.apache.wicket.protocol.http.pagestore.DiskPageStore$SessionEntry. As
>> objects of this class "represent a session" (javadoc), it seems that I
>> had
>> 116.917 sessions mapped in DiskPageStore.sessionIdToEntryMap.
>>
>> In my app, i spotted two reasons for this;
>> 1. search engine bots (e.g. googlebot) receive a new session for each
>> page
>> they access, as we cut of the ;jsessionid= from the URL in our app in
>> order
>> not to have those ugly IDs on the search engine result pages. As a
>> result,
>> when google tried to index 100.000+ pages 100.000+ sessions had been
>> created. I am certainly going to work on this issue, however, it helped
>> me
>> to spot reason number 2:
>>
>> 2. No entries are removed from DiskPageStore.sessionIdToEntryMap. I
>> guess,
>> this should be added to the DiskPageStore.unbind(String sessionId)
>> method:
>>
>>        public void unbind(String sessionId)
>>        {
>>                // FIX: replace get() with remove()
>>                SessionEntry entry =
>> (SessionEntry)sessionIdToEntryMap.get(sessionId);
>>                if (entry != null)
>>                {
>>                        if (isSynchronous())
>>                        {
>>                                entry.unbind();
>>                        }
>>                        else
>>                        {
>>                                List pages =
>> getPagesToSaveList(sessionId);
>>                                synchronized (pages)
>>                                {
>>                                        flushPagesToSaveList(sessionId,
>> pages);
>>                                        entry.unbind();
>>                                }
>>                                pagesToSaveAll.remove(sessionId);
>>                        }
>>                }
>>        }
>>
>> -----
>> -------
>> Stefan Fußenegger
>> http://talk-on-tech.blogspot.com // looking for a nicer domain ;)
>> --
>> View this message in context:
>> http://www.nabble.com/Memory-leak-in-DiskPageStore-tp17597466p17597466.html
>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 


-----
-------
Stefan Fußenegger
http://talk-on-tech.blogspot.com // looking for a nicer domain ;)
-- 
View this message in context: 
http://www.nabble.com/Memory-leak-in-DiskPageStore-tp17597466p17597859.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to