I have a server which monitors a great number of devices. Each value received from the devices is stored in memory for about 5 sec. At the max load on the server I've got about 400 Mb of data to keep in the memory. What I'd like to achieve is storing as less object in Old Generation as possible, since I observe 'concurrent mode failures' of CMS ~ 2 per day, which cause long pauses in the application execution.
I thought that if I increase the size on Young Generation then the objects will stay longer in Yong Generation and will be GC-ted before getting to the Old Generation. But it seems not to be the case - the JVM doesn't even commit the Max Size for Young Generation and I haven't seen any changes in the Age Thresholds chosen by JVM.
What could the typical GC settings be for such an application?