在Raspberry Pi 3中使用Java的下载速度非常慢
我用Java编写了以下代码,用于下载Raspberry Pi 3中的文件:在Raspberry Pi 3中使用Java的下载速度非常慢,java,performance,httpurlconnection,raspberry-pi3,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 = Syste
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毫秒,折合为6.78 KB/s:
我还注意到,执行这段代码时CPU的使用率始终为25%。由于RPi的CPU有4个核,我估计它使用的是单核的100%。我知道这是一个很弱的处理器,但下载文件不是一项要求很高的任务,所以这种奇怪的行为让我感到困惑。我终于解决了这个问题 我删除了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所建议的,这个jdk就是问题所在
谢谢大家的建议 尝试将缓冲区大小从8k增加到256kI。我试过了。即使缓冲区大小为1MB,也没有什么区别。从rpi到curl的速度有多快?你可以试试Oracle的Java而不是OpenJava,两者都是在Raspbian中预装的。是的,这听起来像是你正在使用的jdk从根本上解决了问题。