I think you have to look into the static variables used in your environment.
For example, it could be you are refering to files, which are a 'little' bigger in production\
than they are in development or something similar.
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?
Are you able to run memleak, which is provided by JRockit Mission Control (http://www.oracle.com/technetwork/middleware/jrockit/downloads/index.html)
An example of its usage can be found here: http://middlewaremagic.com/weblogic/?p=6930
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.