Java桌面程序的运行时不稳定

Java桌面程序的运行时不稳定,java,performance,runtime,Java,Performance,Runtime,当我们使用相同的输入运行相同的代码时,我们希望在相同的时间内给出输出。但是我的Java桌面应用程序生成的输出稍有变化,比如51、49、48、50、47秒。而且,运行时的变化不仅仅是下降。上面的例子是我从5次不同的跑步中得到的真实结果。我找不到这种变化的任何合理原因 有人能解释为什么每个运行时都需要不同的持续时间吗?允许运行java程序的JVM需要让计算机准备好运行程序。 由于一些原因,每次执行此操作所需的时间都不同,例如此时计算机上的负载 出现这种差异是因为每次JVM执行上述任务所需的时间都更长

当我们使用相同的输入运行相同的代码时,我们希望在相同的时间内给出输出。但是我的Java桌面应用程序生成的输出稍有变化,比如51、49、48、50、47秒。而且,运行时的变化不仅仅是下降。上面的例子是我从5次不同的跑步中得到的真实结果。我找不到这种变化的任何合理原因


有人能解释为什么每个运行时都需要不同的持续时间吗?

允许运行java程序的JVM需要让计算机准备好运行程序。 由于一些原因,每次执行此操作所需的时间都不同,例如此时计算机上的负载

出现这种差异是因为每次JVM执行上述任务所需的时间都更长。每次的原因都略有不同,因此每次的持续时间都会略有不同


我希望这回答了你的问题。

JVM是允许java程序运行的,它需要让计算机准备好运行程序。 由于一些原因,每次执行此操作所需的时间都不同,例如此时计算机上的负载

出现这种差异是因为每次JVM执行上述任务所需的时间都更长。每次的原因都略有不同,因此每次的持续时间都会略有不同


我希望这回答了您的问题。

您使用线程吗?如果没有任何代码片段和你的应用程序的任何功能,我不会使用线程,但我会使用ArrayList。但这不应该改变运行时,我错了吗?GC所花费的时间会对结果产生很大的影响。我会尝试通过内存配置文件来避免创建对象,并减少最大的垃圾生产者。@PeterLawrey这是个好主意,谢谢。你在使用线程吗?如果没有任何代码片段和你的应用程序的任何功能,我不会使用线程,但我会使用ArrayList。但这不应该改变运行时,我错了吗?GC所花费的时间会对结果产生很大的影响。我会尝试通过内存配置文件来避免创建对象,并减少最大的垃圾产生者。@PeterLawrey这是个好主意,谢谢。这是否意味着为Java程序获得相同的运行时结果实际上是不可能的?因为,即使我关闭每个用户的程序和服务,运行时也会有所不同。你不能关闭所有的程序和进程,而那些你不能关闭的程序和进程通常会占用大部分时间。有没有办法像MATLAB一样稳定Java?因为MATLAB以贪婪的方式使用资源,并且运行时不会改变。这是否意味着要为Java程序获得相同的运行时结果几乎是不可能的?因为,即使我关闭每个用户的程序和服务,运行时也会有所不同。你不能关闭所有的程序和进程,而那些你不能关闭的程序和进程通常会占用大部分时间。有没有办法像MATLAB一样稳定Java?因为MATLAB以贪婪的方式使用资源,并且运行时不会改变。