Raspberry Pi 3中使用Java的下载速度非常慢

时间:2017-06-25 23:27:23

标签: java performance httpurlconnection raspberry-pi3

我在Java中编写了以下代码,用于在Raspberry Pi 3中下载文件:

String fileUrl = "...";
URL urlObj = new URL(fileUrl);
HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();
InputStream in = con.getInputStream();

byte[] buffer = new byte[8*1024];
long t = System.nanoTime();
int read;

while ((read = in.read(buffer)) != -1) {
    System.out.println("Read " + read + "B in " + (System.nanoTime() - t)/1000000.0 + " ms");
    t = System.nanoTime();
}

即使我使用8 KB缓冲区,平均下载速度为1389 B,大约205 ms,相当于6.78 KB / s:

Download speed measurements

我还注意到执行此代码时的CPU使用率始终为25%。由于RPi的CPU有4个内核,我认为它使用100%的单核。我知道这是一个弱处理器,但下载文件并不是一项艰巨的任务,所以这种奇怪的行为让我很困惑。

1 个答案:

答案 0 :(得分:4)

我终于解决了这个问题!

我删除了OpenJDK并安装了Oracle JDK:

sudo apt-get purge openjdk-8-jdk
sudo apt-get purge openjdk-8-jre
sudo apt-get autoremove
sudo apt-get install oracle-java8-jdk

如果正确安装了Oracle的JDK,那么运行java -version应该是这样的:

java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) Client VM (build 25.65-b01, mixed mode)

有了这个,下载速度从大约5 KB / s增加到大约450 KB / s,这是我预期的4 Mbps连接。

我出于好奇而重新安装OpenJDK,下载速度再次变慢,所以这个问题就像Erich Kitzmueller和pvg所说的那样。

感谢大家的建议!