在进行压力测试时,时间久了发现内存中的OLD区一直增加,如果增加到100%,则服务器响应速度会变慢。所以需要由JVM的FULL GC来清理,但是,tomcat6默认配置中,执行一次FULL GC的时间是1小时,如何自定义设置FULL GC的时间呢?
在下面的图中,可以看到,FULL GC执行从1次变为2后,OLD区被清理了(78.03-70.26)%=7.77%。
我觉得是因为创建了太多的resultset,并没有及时关闭rs造成的
建议使用prepareStatement使用executeBatch()
内存和效率占用率都很低,速度非常快
一,先看是不是代码有内存溢出(看你fullgc之后,内存基本清理干净,应该么有溢出)
二,加大old内存,为了减少停顿感使用标记gc算法,UseConcMarkSweepGC
对于32位的系统来说,最大的使用内存1496M左右,可以尝试加大最大内存
加大eden,避免新生代内存不够,直接进去old去了, 同时使用survior
SurviorRatio=4 ,eden:old=1:4
eden+survior*2+old+permSize =1496M
跟容器没有关系 要看你jvm设置的什么full gc的回收策略
有些回收策略就是设置了也没有意义,
如果是并行的话 设置MaxGCPauseMillis就可以
看着不像batch
怎么没有
startBatch();
insert
executeBatch()
之类的呢?