我想通过shell脚本无限次地执行Java代码。为此,我有两个选项。
哪种方法更好?
答案 0 :(得分:5)
基于技术事实的答案:
在shell脚本中使用循环意味着您始终开始新的JVM进程。与在正在执行的Java程序中进行循环相比,这会给系统带来更高的负载。
换句话说:你启动一个JVM会话,它会做一些事情;它会下降;下一次开始......永远。
Linux可能会在封面背后做很多事情,以降低这样做的成本(例如通过实际保存在内存中);但仍然是:你不断启动流程以便很快结束它们。
如果你真的打算为一个"无限的"运行你的代码。时间;比你绝对想避免以任何形式浪费资源。
另一方面,可以给出一个(弱)参数来保持脚本端的循环:当你将循环放入java代码时,你的java代码实际上是错误的(例如内存泄漏);那么一个JVM的内存消耗可以永远增长(直到达到它的极限;然后你可能会看到很多垃圾收集)。
含义:当你知道你的Java代码形状不好时;并且在较长时间内在相同 JVM中运行它会导致问题;当然:启动和停止JVM有一些好处。 但是当然 - 在这种情况下,你还有一些更大的问题。如果你的java应用程序有这样的问题,那么你最好找出它们的根本原因并修复它们;而不是不断启动/停止您的JVM来规避这些问题。
答案 1 :(得分:0)
如果您不关心间隔,如何使用'watch'命令?
你可以输入
看{你的命令}
然后你的命令将刷新2秒,如果你想改变间隔,你可以输入
看-n 5 {你的命令}
然后间隔是5秒,如果您正在监视某些输出值,这是很有意义的。要退出,您可以使用CTRL + C.