I’ve been told by my company’s support team that some versions of java have a significant performance impact when we turn on -verbose:gc. However I can’t figure out if this is the case or not.
Was this logging slow(ish) at some point, and when did it stop?
The reason I ask is that there’s some hesitation about applying this to a production environment to investigate potential memory leaks (and whether we can stop doing periodic restarts of the system…).
Specifically I’m talking about Java 1.4.2 which I think introduced the argument, and what service pack it applies up to.
I suggest that you do the following:
Write some benchmark that is likely to stress the garbage collection. (Create large linked data structures with weak references, etc, etc).
Install a copy of the same version of the JVM as you are using in production on some test box.
Run the benchmark with various GC logging settings, including the settings that you want to run in production, measuring the performance impact on the benchmark.
If you do this right, it will give you some solid evidence about what the likely performance impact will be for your production server.