2011-01-23 63 views
2

有一个项目主要处理输入/输出流。所以我必须将流作为参数传递并从第三方库接收它们。我已阅读Good design: How to pass InputStreams as argument?Closing Java InputStreams,但我不能100%确定第三方共享相同的编码值并遵循最佳设计模式(特别是“打开流的人应该关闭流”)我应该如何处理第三方输入/输出流?

假设流是相当大(500MB的 - 的3Gb),我对CPU和内存资源紧张,这里有对Java几个问题SO社区:

  1. 如果我曾经试图关闭我从有流第三方库?
  2. 什么是未封闭的流可能的危险影响(不包括额外的GC工作量)
  3. 这些影响是否与流的大小成正比?

回答

2
  1. 您应该在流到达结尾时关闭流。如果传递库不希望你这样做,它应该包装流忽略close()。
  2. 未封闭的流将资源打开,例如,一个打开的文件不能被删除。
  3. 大小并不重要。
+0

谢谢,从字节数组,字符串,XML DOM等变量派生的流怎么样?我想这些内部第三方变量会吃掉我的堆大小,直到我关闭流,不是吗? – Osw 2011-01-23 23:03:13