Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中下载大文件-gc太多?_Java_Android - Fatal编程技术网

Java 在Android中下载大文件-gc太多?

Java 在Android中下载大文件-gc太多?,java,android,Java,Android,我有一个扩展线程的类 其中,我的run()方法有一个while循环: HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); input = new BufferedInputStream(urlConnection.getInputStream()); output = new FileOutputStream(localFile, true);

我有一个扩展线程的类

其中,我的run()方法有一个while循环:

HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
input = new BufferedInputStream(urlConnection.getInputStream());
output = new FileOutputStream(localFile, true);                                                             
urlConnection.setReadTimeout(10000); 
byte data[] = new byte[16384]; 

while ((count = input.read(data)) != -1) {
    output.write(data, 0, count);
}

我们的目标是ICS及以上。当我们下载时,我们在logcat中看到大量垃圾收集。这似乎是一个微不足道的方法,我们有什么地方做错了吗?我们只创建了一次数据数组

多少GC是GC的“很多”?也许附加一部分logcat将有助于显示问题。启动GC有不同的原因;你看到的可能完全是例行公事。你能发布日志吗?这段代码应该会产生大约0个GC。完成后,
data[]
BufferedInputStream
的内部缓冲区将被GC'd。复制数据时不应发生任何事情。如果你自己缓冲数据,你也不需要一个
BufferedInputStream
。Android的GC比台式机慢,所以你会看到更多的时间花费在垃圾收集上。正如@zapl所说,这段代码似乎不会产生垃圾。如果你看到更多的GC,它可能在别处。尝试使用DDMS评测你的应用程序,并发布结果。我们很乐意提供帮助。您的代码中还有其他循环吗?