Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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 为什么通过超文本传输协议首次访问速度慢_Java_Http_Networking_Tcp_Packet - Fatal编程技术网

Java 为什么通过超文本传输协议首次访问速度慢

Java 为什么通过超文本传输协议首次访问速度慢,java,http,networking,tcp,packet,Java,Http,Networking,Tcp,Packet,我正在研究通过http1.0内部局域网的访问时间。 我将http服务器设置为127.0.0.1:30000,并允许curl访问服务器。 (http服务器代码在上实现 这是一个非常简单的程序。) 旋度-I-0“http://127.0.0.1:30000/" 有趣的是,只有第一次访问需要很长时间。 第一次访问大约需要5.0毫秒,但第二次访问需要0.7毫秒。 以下访问只需不到1毫秒 我用WireShark偷看了一下包,发现 从服务器占用[PSH,ACK]数据包的几乎所需时间。 为什么会出现这样的差异

我正在研究通过http1.0内部局域网的访问时间。 我将http服务器设置为127.0.0.1:30000,并允许curl访问服务器。 (http服务器代码在上实现 这是一个非常简单的程序。)

旋度-I-0“http://127.0.0.1:30000/"

有趣的是,只有第一次访问需要很长时间。 第一次访问大约需要5.0毫秒,但第二次访问需要0.7毫秒。 以下访问只需不到1毫秒

我用WireShark偷看了一下包,发现 从服务器占用[PSH,ACK]数据包的几乎所需时间。 为什么会出现这样的差异

(我怀疑持续连接会使第二次访问变快。 但是,我在http1.0环境下进行了实验,
持久连接是在http1.1中定义的)

大多数事情在Java上第一次速度较慢,之后速度相当快。一个重要原因是JIT。尝试在服务器虚拟机中运行服务器(使用
java-server
)。我尝试了-server选项,但运行时间变化不大-Xint选项是相同的。虽然我用C语言实现了http服务器并进行了测量。每次经过的时间都不到1.0毫秒!所以,我认为这个问题取决于Java语言,但JIT(字节码缓存?)与这个度量中的数据无关。嗯,这很奇怪。@Gilbertotorezan:JIT通常比第二次更快。更像是第501次。@JBNizet,这取决于VM的实现。您可能正在谈论客户机热点(Oracle)VM。但是有很多虚拟机,它们之间有几个显著的差异,主要是在JIT编译方面。