打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何处理频繁创建对象然后丢弃导致频繁GC的情况
如何处理频繁创建对象然后丢弃导致频繁GC的情况
2011年10月29日 20:16
        
                   

如何处理频繁创建对象然后丢弃导致频繁GC的情况

应用场景:

程序主动去请求第三方系统,该系统返回xml文件。

程序通过dom4j来解析xml文件,并定义了一些bean来存储xml中的信息。

以方便供程序使用。

但在系统的运行过程中,访问次数相当频繁,上万次,这样导致,创建了大量的bean用于储存xml中的信息。

然后bean用完丢弃,导致GC比较频繁。

像这种情况下,有什么好的建议吗。对这些bean的处理

回复:如何处理频繁创建对象然后丢弃导致频繁GC的情况
2011年10月30日 11:17
        

2011年10月29日 20:16 "@billows"的言论
然后bean用完丢弃,导致GC比较频繁 ...


反复使用这些Bean,比如建立一个Pool池,设定池中有空Bean 1000个,需要转换XML拿出来,转换完成放回Pool中。
优化JVM内存。

具体看这个PPT:Twitter的 JVM性能微调:Everything I Ever Learned About JVM Performance Tuning @Twitter
[该贴被banq于2011-10-30 11:36修改过]

回复: 回复:如何处理频繁创建对象然后丢弃导致频繁GC的情况
2011年11月03日 08:57
        

2011年10月30日 11:17 "@banq"的言论
比如建立一个Pool池,设定池中有空Bean 1000个,需要转换XML拿出来,转换完成放回Pool中 ...



您提的建立一个pool池,以前我没想到,因为我觉得这些bean每次请求的数据都不一样,即

可以说都是有状态的。所以一直没有想用池或缓存来处理他们。

建立pool池,里没有1000个空bean,用完后在把bean中的数据清空,在放回pool池中。

这样理解对吗?

谢谢 banq

回复: 回复: 回复:如何处理频繁创建对象然后丢弃导致频繁GC的情况
2011年11月04日 11:51
        

2011年11月03日 08:57 "@iluguo"的言论
您提的建立一个pool池,以前我没想到,因为我觉得这些bean每次请求的数据都不一样,即

可以说都是有状态的。所以一直没有想用池或缓存来处理他们。

建立pool池,里没有1000个空bean,用完后在把bean中的数据清空,在放 ...


我觉得设置为null,就可以让GC自动回收了

回复: 回复: 回复: 回复:如何处理频繁创建对象然后丢弃导致频繁GC的情况
2011年11月04日 23:06
        

2011年11月04日 11:51 "@docsun"的言论
我觉得设置为null,就可以让GC自动回收了...


GC是回收这些内存了,但是GC太频繁。

2011-10-28T13:50:45.062+0800: 158.233: [GC 158.233: [DefNew: 237897K->5619K(245760K), 0.0870050 secs] 267424K->48443K(791936K), 0.0871725 secs] [Times: user=0.09 sys=0.00, real=0.09 secs]
2011-10-28T13:50:54.125+0800: 167.304: [GC 167.304: [DefNew: 224115K->7915K(245760K), 0.0334763 secs] 266939K->50739K(791936K), 0.0336511 secs] [Times: user=0.05 sys=0.00, real=0.05 secs]
2011-10-28T13:50:59.203+0800: 172.378: [GC 172.378: [DefNew: 226411K->7954K(245760K), 0.0239013 secs] 269235K->50778K(791936K), 0.0240657 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]
2011-10-28T13:51:23.812+0800: 196.983: [GC 196.983: [DefNew: 226450K->6298K(245760K), 0.0222406 secs] 269274K->49122K(791936K), 0.0224050 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]
2011-10-28T13:51:53.296+0800: 226.471: [GC 226.471: [DefNew: 224794K->6791K(245760K), 0.0225674 secs] 267618K->49615K(791936K), 0.0227340 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]
2011-10-28T13:52:25.171+0800: 258.338: [GC 258.338: [DefNew: 225287K->6223K(245760K), 0.0218760 secs] 268111K->49047K(791936K), 0.0220617 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]
2011-10-28T13:52:56.765+0800: 289.945: [GC 289.945: [DefNew: 224719K->6322K(245760K), 0.0211256 secs] 267543K->49146K(791936K), 0.0212925 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]
2011-10-28T13:53:12.062+0800: 305.239: [GC 305.239: [DefNew: 224818K->6580K(245760K), 0.0214838 secs] 267642K->49404K(791936K), 0.0216502 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]
2011-10-28T13:53:37.593+0800: 330.771: [GC 330.771: [DefNew: 225076K->6486K(245760K), 0.0213408 secs] 267900K->49310K(791936K), 0.0215129 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]
。。。

[该贴被billows于2011-11-04 23:08修改过]

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
gc的日志分析
优化JVM参数提高eclipse运行速度 - Java综合 - Java - JavaEy...
JVM优化经验总结
Minor GC 中 MaxTenuringThreshold 和 TargetSurvivorRatio 参数说明
016-GC-JVM的Stop The World,安全点
Java GC日志查看
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服