Thanks Henrik,
We don't store Page references (we use getPage()) except in one case but
that's a reference to the current page. I did come across this
information about a JVM bug:
http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=414ae2ad0e65bfffffffffabc12f25012527?bug_id=4879883
It looks like there's a property we can try but that it's not
necessarily and ideal (or even acceptable?) solution? Sun devs say this
was fixed in 1.4 but people have been complaining about it in 1.5 and 1.6.
Some more information on this:
http://osdir.com/ml/java.bdbje.general/2005-05/msg00027.html
So, we'll give it a shot and report back to the list (in case others
come across this problem). Though ... it does concern me some that we
would have used up 64mb of direct memory writing out pages. It appears
as though the memory is deallocated using a separate thread (in
java.nio.DirectByteBuffer) so it's possible that wicket is writing out
pages and using up the direct memory before it can be cleaned up.
Meetesh
Henrik Lundahl wrote:
Hi
One thing you can check is if you have any references (instance
variables, possibly implicit) to pages from your component hierarchy.
That seems to cause memory leaks in the serialization. I reported a
Jira issue about this yesterday
(https://issues.apache.org/jira/browse/WICKET-1365).
Another thing could of course be that there isn't enough memory to
store all the concurrent sessions. If you still run out of memory
after increasing the limit with the same load, this shouldn't be it,
though.
BR,
Henrik
2008/2/22, Meetesh Karia <[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>>:
Hi all,
We're getting an OutOfMemoryError (Wicket 1.3.1 on Tomcat 5.5.17 with
Sun JVM 1.5.0_06-b05) in the PageSavingThread occasionally and I was
just wondering if anyone had seen this before. Is it likely just a
side-effect of some other problem in our application? Or is this an
issue with how the pages are written out in wicket.
Exception in thread "PageSavingThread-wicketFilter"
java.lang.OutOfMemoryError
at sun.misc.Unsafe.allocateMemory(Native Method)
at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:99)
at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:288)
at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:56)
at sun.nio.ch.IOUtil.write(IOUtil.java:69)
at sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:651)
at
org.apache.wicket.protocol.http.pagestore.DiskPageStore$SessionEntry.savePage(DiskPageStore.java:246)
at
org.apache.wicket.protocol.http.pagestore.DiskPageStore.flushPagesToSaveList(DiskPageStore.java:885)
at
org.apache.wicket.protocol.http.pagestore.DiskPageStore$PageSavingThread.run(DiskPageStore.java:948)
Thanks in advance,
Meetesh