记得在我前一阵子的blog中写了关于jdk1.5的pool的内存溢出问题,这次乘着新的memcache客户端的使用,做了一次全面的压力测试。
<?xml:namespace prefix = o />jdk采用1.5的压力测试结果压了一个周末回来就无法响应了,看了看它的GC输出:
全都是[Full GC [Tenured: 786431K->786431K(786432K), 3.4802480 secs] 1022399K->1022399K(1022400K), [Perm : 36711K->36711K(98304K)], 3.4808510 secs]
替换jdk1.5为jdk1.6昨天中午开始做压力测试到今天中午我取了一下日志,看见GC输出如下:
[GC [PSYoungGen: 256608K->3608K(257792K)] 859002K->606698K(1044224K), 0.0562040 secs] [Times: user=0.17 sys=0.01, real=0.05 secs]
这就很明显的看出了差别了,前者已经把家底全部都用完了,出于out of memory的状态了。后者还是普通的GC回收,回收效果很好,同时看了看jboss启动的时候回收后占用的YoungGen就1300K左右,因此跑了一天的压力测试应该说还算是正常。
Full GC也就是在年轻代无法满足内存分配要求的时候才去做,这时候其实对于中老两代来说应该已经可能被占用完毕了,Full GC发生频率也越来越高,服务器响应速度也越来越慢。
因此对于持久的压力测试来说,打印出GC可以很好的分析出应用本身的内存使用状况,避免长期运行中少量内存泄露最终导致的应用不可用。
顺便说一下memcache 客户端修改后的测试结果:
测试方案:
开始50个并发,每个并发每次请求完毕后休息0.1秒,10分钟后增长50个并发,按此规律增长到500并发。
新旧版本SIP是在JDK1.5环境下完成的压力测试,
压力机和以前一样,是10.2.226.40,DELL1950,8CPU,8G内存。
压力机模拟发出对一个需要签名的API不断的调用请求。
测试结论:
老版本的SIP性能和以前一样,并发500的时候,TPS接近480,CPU 68%
新版本的SIP性能比老版本好很多,并发500的时候,TPS接近770,且系统压力很小,CPU利用率平均只有16%
分享到:
相关推荐
今天来谈谈C#的GC,也就是垃圾回收机制,非常的受教,总结如下 首先:谈谈托管,什么叫托管,我的理解就是托付C#运行环境帮我们去管理,在这个运行环境中可以帮助我们开辟内存和释放内存,开辟内存一般用new,内存是...
sun_GC回收机制及内存等优化
gc回收机制
第6节: GC垃圾回收-02第6节: GC垃圾回收-02第6节: GC垃圾回收-02第6节: GC垃圾回收-02第6节: GC垃圾回收-02第6节: GC垃圾回收-02第6节: GC垃圾回收-02第6节: GC垃圾回收-02第6节: GC垃圾回收-02第6节: GC...
关于格科微摄像头gc2035如何优化的详细讲解! 有助于学习摄像头优化学习!
让你对java gc 的工作原理有更深的了解 谢谢下载
tomcat GC 优化配置
java垃圾回收(gc)机制详解
这些方法包括但不局限于以下几点:并发标记清除(Concurrent Mark Sweep,CMS)和G1垃圾回收器的CPU和内存开销,避免长期存活对象引起的持续GC周期,优化GC线程任务分配使性能提升,以及GC停顿时间可预测所需的OS设置。
java查看哪个进程频繁GC垃圾回收
JVM GC垃圾回收.pdfJVM GC垃圾回收.pdfJVM GC垃圾回收.pdfJVM GC垃圾回收.pdfJVM GC垃圾回收.pdf
GC总结
程序避免被GC 回收 --------引用
.net中关于GC垃圾回收机制的详细描述
JVM内存模型、堆与栈详解以及gc回收机制解析、回收方法
JVM堆相关知识 为什么先说JVM堆? JVM的堆是Java对象的活动空间,程序中的类的对象从中分配空间,其存储着正在...这些对象的建立方式就是那些new一类的操作,当对象无用后,是GC来负责这个无用的对象(地球人都知道)。
go-mysqlstack:无与伦比和GC优化的MySQL协议库