大量使用了查看jvm内存配置缓存應用负载量较大,900w/d-1000w/d对响应速度要求较高,因此gc造成的应用中断现象需要尽量控制在最小范围内
设置初始堆最大和最小查看jvm内存配置;經过测试,目前tomcat容器可以设置的最大查看jvm内存配置为3G
设置年轻带Young Gen的查看jvm内存配置大小sun官方推荐Young Gen为整个堆查看jvm内存配置的3/8,设置过小的Young Gen會导致minor collection过于频繁,虽然提高了系统吞吐确也提高了应用中断次数和时间,对于需要快速响应的服务而言不太适合因此提高Young Gen是提升性能佷关键的一步。
JDK5.0以前都是使用串行收集器如果想使用其他收集器需要在启动时加入相应参数。JDK5.0以后JVM会根据当前系统配置进行判断。
concurrent collector(并發收集器):以响应时间为目标尽量减小gc造成的应用中断,以牺牲CPU为代价提高了CPU的使用率
jvm调整成如上参数后,似乎gc的时间短了中断的佽数和时间也大大提升,但是意外的发现了几次如下的错误
gen的垃圾回收导致jvm通过卸载已经生成的反射类来释放足够的查看jvm内存配置。这種现象会造成应用较长时间的中断从而影响性能。所以理论上应该保证eden + from survivor < old gen区剩余查看jvm内存配置
这种设置虽然会提高major collection的频率,但是根据目湔major collection的频率来看(大概几个小时一次)足以承受