Java性能不佳的GC很多对象

时间:2015-08-27 20:06:12

标签: java performance memory garbage-collection

我正在使用一个应用程序,它需要每秒对1000个对象进行去分类,对postgres数据库进行验证,然后使用SQS重新序列化要发送到下一个进程的数据。我一直在观察的是,经过一个小时左右的时间,我开始从连接池中获得大量的数据库连接。我认为这是由于我的堆空间最大化所导致的垃圾收集时间过长。 GC每隔几秒运行一次,导致明显滞后。似乎java无法跟上需要创建/销毁的对象的数量,并且一旦初始堆分配耗尽并且GC需要更频繁地开始运行并且更积极地一切都会崩溃。

需要创建/销毁具有高吞吐量的大量对象的应用程序的最佳实践是什么?

当机器处于错误状态时,这是jstat的输出:

 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
780288.0 800768.0  0.0    0.0   3015680.0 3015680.0 9313280.0  9312970.9  55680.0 54500.5 6272.0 6013.2    470  101.671  390  6241.164 6342.835
780288.0 800768.0  0.0    0.0   3015680.0 3015680.0 9313280.0  9312970.9  55680.0 54500.5 6272.0 6013.2    470  101.671  390  6241.164 6342.835

0 个答案:

没有答案