Java 在Android中下载大文件-gc太多?
我有一个扩展线程的类 其中,我的run()方法有一个while循环:Java 在Android中下载大文件-gc太多?,java,android,Java,Android,我有一个扩展线程的类 其中,我的run()方法有一个while循环: HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); input = new BufferedInputStream(urlConnection.getInputStream()); output = new FileOutputStream(localFile, true);
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评测你的应用程序,并发布结果。我们很乐意提供帮助。您的代码中还有其他循环吗?