完整GC期间出现SocketException

时间:2015-04-03 22:27:48

标签: garbage-collection jvm

我在服务器日志中看到一个奇怪的行为,在完全GC发生的所有时间,我看到抛出了SocketException。这是预期的行为吗?

jdk 1.7 jboss 6.1

1 个答案:

答案 0 :(得分:1)

这是预期行为的场景:

  1. Socket已打开
  2. 应用程序将SocketOutputStream包裹在BufferedOutputStream
  3. 应用程序将一些数据写入BufferedOutputStream
  4. 应用程序泄漏了Socket> SocketOutputStream> BufferedOutputStream堆叠......没有关闭它。
  5. 时间过去了......
  6. 远程服务器/客户端超时交互并关闭TCP流。
  7. 时间过去了......
  8. GC运行,找到BufferedOutputStream并尝试完成它
  9. finalize()方法尝试刷新缓冲的数据。
  10. 触发异常,因为无法将数据刷新到已关闭的TCP / IP连接。