我正在编写一个java性能测试程序,它在每个线程中激活HttpURLConnection.openConnection方法并从Web服务器下载文件,但不在本地保存。这是我的代码:
HttpURLConnection conn = null;
InputStream is = null;
try {
URL prs = new URL(url);
conn = (HttpURLConnection)prs.openConnection();
if (conn.getResponseCode() == HttpStatus.SC_OK && conn.getContentLength() > 0 ) {
is = conn.getInputStream();
while (is.read() != -1) {
}
} else {
System.err.println(url+" returned response code : "+conn.getResponseCode()+" and content lengh = "+conn.getContentLength());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
conn.disconnect();
}
此测试的目的是查看使用越来越多的线程下载文件(实际上不将其保存到磁盘)所需的时间,并测量处理服务器和客户端上的每个线程所需的时间。我不想在客户端保存文件,只需读取输入流。
问题在于,每次运行此程序时,客户端性能开始下降。我不确定,输入流是否未关闭或是什么。
我们的想法是从每个线程的内存中完全丢弃连接的输入流。
由于