Java内存优化(如何避免内存泄漏 - 具体示例)

时间:2011-01-28 09:10:50

标签: java memory-management memory-leaks garbage-collection iostream

我在Java Web应用程序中创建了一个Pdf,并将其作为电子邮件附件发送。 Pdf创建为byte[]数组。将它包装在ByteArrayInputStream中还是将其保留为byte[]是否更好?

包装它可能更好的内存释放(读取this线程中接受的答案),但缺点是InputStream(如果我是对的)创建数组的副本(阅读here)。

哪种方法可以避免内存耗尽?

1 个答案:

答案 0 :(得分:3)

不,ByteArrayInputStream 包装数组,它不会复制它。来自the documentation(构建者采用byte[]):

  

创建一个ByteArrayInputStream,以便它使用buf作为其缓冲区数组。不复制缓冲区数组。 pos的初始值为0,count的初始值为buf的长度。

有可能无论使用输入流都会复制它,但ByteArrayInputStream本身不会复制它。

我不相信你真的担心一个特别重要的问题 - 我认为它根本不会产生内存泄漏,只是使用字节数组。