2015-04-03 28 views
0

我在我的服務器日誌中看到一個奇怪的行爲,其中,所有時間Full GC發生,我看到一個SocketException被拋出。這是預期的行爲嗎?Full GC期間的SocketException

JDK 1.7 的JBoss 6.1

+0

它可能是。告訴我們堆棧跟蹤 – 2015-04-03 22:32:41

+1

***什麼***'SocketException'被拋出? – EJP 2015-04-03 23:52:49

回答

1

在此處,這是預期的行爲的情景:

  1. Socket打開
  2. 應用包SocketOutputStreamBufferedOutputStream
  3. 應用一些數據寫入到BufferedOutputStream
  4. 應用程序泄漏Socket>SocketOutputStream>BufferedOutputStream堆棧...沒有關閉它。
  5. 時間流逝...
  6. 遠程服務器/客戶端超時交互並關閉TCP流。
  7. 時間在流逝...
  8. 的GC運行,發現BufferedOutputStream並試圖敲定這
  9. finalize()方法嘗試刷新緩存數據。
  10. 這會觸發異常,因爲數據無法刷新到關閉的TCP/IP連接。
+0

VG,但它會觸發'IOException:connect reset.' – EJP 2015-04-03 23:53:47