I think my application really has a memory leak. I turn on verbose:memory and see the heap usage constantly increasing and eventually exhausted in every ~1 week.
So I don't think reading large file would be causing the issue, right? (My application mostly read data from DB using hibernate w/o caching) Because if that's the case the heap shouldn't be constantly increasing.
The reason that I cannot reproduce it on development environment might be that I didn't test every api/cases (I really can't, too much code). So any suggestion how should I investigate further? I also notice that there are a lot of ServletRequestImpl and MuxableSocketHTTP. Is it possible that we misconfigure some servlet/connection/thread pool?
My company doesn't allow open up a firewall for profiler. After reading your document I want to try generate hprof dump but seem like jrockit i'm using is too old. It doesn't support hprof dump yet.
I think for now I can only try run heap_diagnostics every hour or so and analyze the results.