On Mar 6, 2008, at 10:37 AM, Jim Foster wrote:


Hi Peter,

Thank you for this info!

I took your suggestion and brought myself up to speed on PermGen, and a good
bit of all things related to Java.lang.OutOfMemoryError.

All I can say is that there's certainly a lot more to fine-tuning the
classloading going on behind the scenes than one would first imagine.

This brings up another question: How do you folks manage this?

What tools would you recommend that I add to my toolbox so that I can really
understand what's really going on beneath the covers?

As I mentioned in my earlier post, this project I am involved with will be weaving together several applications to be deployed on top of Geronimo, so
sooner or later, fine-tuning performance issues will become a reality.

I'd like to get a handle on such things as early in the development cycle as
possible.

Hi Jim,
There are a lot of knobs and switches. However, you can cause as much harm as good trying to fine tune their settings. My advice to you is to keep things as simple as possible until you know you have a problem.

The JVM can print GC statistics to STDOUT. Often I find this sufficient for getting a broad overview of what's going on. You can also configure the JVM to create a heapdump on OOME conditions. If you have a memory leak, you can then analyze the heapdump using a variety of tools (I like YourKit). There are a number of tools which can also perform further analysis on runtime data (memory allocations, method execution, etc).

Something like the following should work (set max heap and max perm to suit your environment):

-Xmx512m -XX:MaxPermSize=128m -verbose:gc -XX:+PrintGCDetails -XX: +HeapDumpOnOutOfMemoryError

--kevan

Reply via email to