无限while循环:Java或Shell脚本

无限while循环:Java或Shell脚本,java,linux,shell,Java,Linux,Shell,我想通过shell脚本无限次地执行Java代码。为此,我有两个选择 使用while循环无限调用Shell脚本中的Java类 无限while在Java类代码中循环,并在Shell脚本中调用Java类一次 哪种方法更好?基于技术事实的答案: 在shell脚本中包含循环意味着不断启动新的JVM进程。与正在执行的Java程序中有一个循环相比,这将给系统带来更高的负载 换句话说:启动一个JVM会话,它会做一些事情;它下降了;下一个开始。。。永远 可能Linux在幕后做了很多事情,以降低这样做的成本(例如,

我想通过shell脚本无限次地执行Java代码。为此,我有两个选择

  • 使用while循环无限调用Shell脚本中的Java类
  • 无限while在Java类代码中循环,并在Shell脚本中调用Java类一次

  • 哪种方法更好?

    基于技术事实的答案:

    在shell脚本中包含循环意味着不断启动新的JVM进程。与正在执行的Java程序中有一个循环相比,这将给系统带来更高的负载

    换句话说:启动一个JVM会话,它会做一些事情;它下降了;下一个开始。。。永远

    可能Linux在幕后做了很多事情,以降低这样做的成本(例如,通过实际将事情保存在内存中);但仍然是:你不断地开始过程,然后很快结束它们

    如果您真的打算在“无限”的时间内运行代码;你肯定不想以任何形式浪费资源

    另一方面,这可以为在脚本端保留循环提供一个(弱)论据:当您将循环放入java代码中时,您的java代码实际上有缺陷(例如内存泄漏);然后,一个JVM的内存消耗可能会永远增长(直到达到极限;然后您可能会看到大量的垃圾收集)

    意思是:当您知道您的Java代码状态不好时;在相同的JVM中长时间运行会导致问题;当然,启动和停止JVM有一些好处。
    但当然,在这种情况下,你会遇到更大的问题。如果您的java应用程序有这样的问题,那么您最好确定它们的根本原因并修复它们;而不是不断启动/停止JVM来规避这些问题。

    基于技术事实的答案:

    在shell脚本中包含循环意味着不断启动新的JVM进程。与正在执行的Java程序中有一个循环相比,这将给系统带来更高的负载

    换句话说:启动一个JVM会话,它会做一些事情;它下降了;下一个开始。。。永远

    可能Linux在幕后做了很多事情,以降低这样做的成本(例如,通过实际将事情保存在内存中);但仍然是:你不断地开始过程,然后很快结束它们

    如果您真的打算在“无限”的时间内运行代码;你肯定不想以任何形式浪费资源

    另一方面,这可以为在脚本端保留循环提供一个(弱)论据:当您将循环放入java代码中时,您的java代码实际上有缺陷(例如内存泄漏);然后,一个JVM的内存消耗可能会永远增长(直到达到极限;然后您可能会看到大量的垃圾收集)

    意思是:当您知道您的Java代码状态不好时;在相同的JVM中长时间运行会导致问题;当然,启动和停止JVM有一些好处。
    但当然,在这种情况下,你会遇到更大的问题。如果您的java应用程序有这样的问题,那么您最好确定它们的根本原因并修复它们;而不是不断地启动/停止JVM来规避这些问题。

    如果您不关心间隔,那么使用“watch”命令怎么样?
    您可以键入
    注意{你的命令}
    然后,您的命令将刷新2秒,如果要更改间隔,可以键入
    注意-n5{你的命令}

    然后间隔为5秒,如果您正在监视某个输出值,这将非常方便。要退出,您可以使用CTRL+C。

    如果您不在乎间隔,那么使用“watch”命令怎么样?
    您可以键入
    注意{你的命令}
    然后,您的命令将刷新2秒,如果要更改间隔,可以键入
    注意-n5{你的命令}

    然后间隔为5秒,如果您正在监视某个输出值,这将非常方便。要退出,您可以使用CTRL+C。

    您自己没有任何意见吗?使用java,您可以通过将这些命令写入文件来跟踪执行的命令,这可能有助于以后的调试,具体取决于。在所有其他条件相同的情况下(它们从来都不是),我认为没有必要每次都返回shell并再次调用Java,因此Java中的循环一开始似乎最吸引人。目的是什么?不知道目标很难回答。@shryankshah感谢接受;但是读到你最近的评论,我有点惊讶:当你真的要做24x7实时事务处理时;然后应该有一个完整的架构;关于如何准确地部署/运行该组件的思考应该是该思考过程中的一个重要“章节”。从这个意义上讲,仅仅提出一个问题就只是一个开始。是的,这给了你一些想法;但真正的想法应该从现在开始…你自己没有任何意见吗?使用java,你可以通过将这些命令写入文件来跟踪执行的命令,这可能会有助于以后的调试,具体取决于。在所有其他条件相同的情况下(它们从来都不是),我认为没有必要每次都返回shell并再次调用Java,因此Java中的循环一开始似乎最吸引人。目的是什么?不知道目标很难回答。@shryankshah感谢接受;但是读到你最近的评论,我有点惊讶:当你真的要做24x7实时事务处理时;然后应该有一个完整的架构;关于如何准确地部署/运行该组件的思考应该是该思考过程中的一个重要“章节”。从这个意义上讲,仅仅提出一个问题就只是一个开始。是的,t