当使用Ant时,java中的web请求很慢



我正在做一个使用Apache Ant的学校项目。在我的项目中,我正在执行web请求。

查看我的build.xml文件中的特定目标:

<target name="daemon" depends="build.all">
    <java 
        classpathref="run.path.id"
        classname="xxx.xxx.Daemon"
        fork="false">
    </java>
</target>

如果我运行这个目标,所有web请求大约需要30秒(每个)来完成。如果我将fork属性更改为:

<target name="daemon" depends="build.all">
    <java 
        classpathref="run.path.id"
        classname="xxx.xxx.Daemon"
        fork="true">
    </java>
</target>

请求几乎立即完成(不到一秒)。


来自https://ant.apache.org/manual/Tasks/java.html关于fork属性:

如果启用,则在另一个VM中触发类执行(默认禁用)

为什么这会对web请求的性能产生如此巨大的影响?


更新:

此问题仅在Windows上存在。我测试了两台运行Windows的机器。两者都表现出这种行为。然后,我在每个虚拟机上启动一个虚拟机(运行Ubuntu),无论fork属性的值如何,守护进程目标都能完美运行。

如果您运行java命令,这将创建一个自己的进程,该进程将在同一JVM中的单独线程中运行。因此,虽然进程是从运行Ant的线程创建的,但它不会立即运行。

相关内容

  • 没有找到相关文章

最新更新