2013-10-03 32 views
0

編輯我真的很抱歉,但我犯了一個錯誤,指定庫。標題中的那個是正確的。是org.springframework.web.multipart.commons.CommonsMultipartFile#transferTo()方法內存安全嗎?

當使用transferTo()方法org.springframework.web.multipart.commons.CommonsMultipartFile時,我應該關心內存泄漏嗎?

由於我傳輸的內容我想有一個要管理的流。通過查看文檔,我沒有找到任何參考,但我都沒有發現任何明確的聲明,即流管理由庫處理。

+0

不,有一個*通道*來管理。他們兩個人。你的。我真的不明白你認爲可能是什麼「記憶不安全」,或者確實意味着什麼。 – EJP

+0

我的意思是,當你使用流時,你必須明確地打開和關閉它們。你必須非常小心地處理它們,因爲世界上最糟糕的東西是流通的。他們會帶領你走向可怕的PermGen空間異常,這可能會發生在一些棘手的情況。我問的是:通過執行'file.transferTo(...)'我應該尋找一種方法來關閉已建立的通道,或者是處理這方面的方法本身嗎? – MaVVamaldo

回答

1

transferTo和transferFrom是Java NIO的一部分。

有兩種重載方法

一個是委託給內核的本機實現。

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/nio/ch/FileChannelImpl.java#FileChannelImpl.transferTo0%28int%2Clong%2Clong%2Cint%29

的其他用途與WritableByteChannel。

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/sun/nio/ch/FileChannelImpl.java#FileChannelImpl.transferTo%28long%2Clong%2Cjava.nio.channels.WritableByteChannel%29

下面是一個Oracle的博客文章這也解釋了流和渠道

https://blogs.oracle.com/slc/entry/javanio_vs_javaio

只要你的「通道」對象正確使用之間的區別/關閉。我不認爲有任何明確的記憶管理。