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

11-10-29 billows
                   

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

应用场景:

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

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

以方便供程序使用。

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

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

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

                   

17
banq
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修改过]

iluguo
2011-11-03 08:57

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

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

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

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

这样理解对吗?

谢谢 banq

docsun
2011-11-04 11:51

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

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

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

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

billows
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修改过]

4Go 1 2 3 4 下一页