Sudden and strange change in GC behaviour
843829Feb 9 2006 — edited Feb 16 2006I see very strange GC behaviour with our application running by one of our customers, but I fail to reproduce it in lab. Most of the time the application is running just fine, and suddenly GC may start doing absolutely strange things.
Firstly, it starts running mostly major collections (normally one major collection in a few hours under the same user load)
81703.7: [GC 81703.7: [DefNew: 737664K->737664K(760704K), 0.0000446 secs]81703.7: [Tenured: 2173068K->588301K(2350848K), 13.0162284 secs] 2910732K->588301K(3111552K), 13.0167844 secs]
81730.7: [GC 81730.7: [DefNew: 737664K->319K(760704K), 0.0544614 secs] 2205198K->1467853K(3111552K), 0.0548729 secs]
81746.8: [GC 81746.8: [DefNew: 735966K->735966K(760704K), 0.0000519 secs]81746.8: [Tenured: 2347147K->580785K(2350848K), 9.9294041 secs] 3083113K->580785K(3111552K), 9.9300118 secs]
The size of used memory suggests that objects get allocated directly to Tenured Generation. Secondly, collections become much more frequent (from 150-200 secs to 10-20 sec gap between collections). All together produce an astonishing rate of memory usage (acquired memory per second) of 50-100 MB/sec (normally it is about 2MB/sec). On the other hand, major collections take much less time, from 40 sec to 6-8 sec, which is good.
I do not see anything happening on the server that could explain such a major jump in memory usage! Also, the users do not see any significant and sudden change in response time. But over time it definitely affects performance (mostly because of frequent major collections) and the server needs to restart to get back to normal.
JVM version 1.4.1._02 on Solaris 8, parameters:
-Xms3000000 �Xmx3000000 -XX:NewRatio=3
I cannot reproduce it in test environment, so I cannot try a different JVM version and need to know why it happens before changing any JVM parameters (the current set looks a bit conservative but it works fine most of the time)