控制Linux中Java独立运行的最大值
我们开发了一个Java独立程序。我们已经在Linux(RedHat ES 4)cron中进行了配置 计划每10分钟执行一次Java单机版。每个独立的 有时可能需要超过1小时才能完成,或者有时可能需要完成 甚至在5分钟之内 我要寻找的问题/解决方案是,执行Java Standalone的数量 例如,任何时候都不应超过5个过程。那么比如说,, 在Java独立/进程启动之前,如果已经有5个进程在运行, 那么这个过程就不应该开始了,;否则,这将间接启动 正在创建OutOfMemoryError问题。我如何控制这个?我还想使这5个进程限制可配置 其他信息:控制Linux中Java独立运行的最大值,java,memory-management,process,Java,Memory Management,Process,我们开发了一个Java独立程序。我们已经在Linux(RedHat ES 4)cron中进行了配置 计划每10分钟执行一次Java单机版。每个独立的 有时可能需要超过1小时才能完成,或者有时可能需要完成 甚至在5分钟之内 我要寻找的问题/解决方案是,执行Java Standalone的数量 例如,任何时候都不应超过5个过程。那么比如说,, 在Java独立/进程启动之前,如果已经有5个进程在运行, 那么这个过程就不应该开始了,;否则,这将间接启动 正在创建OutOfMemoryError问题。我如
我还配置了-Xms和-Xmx堆大小设置 是否有任何工具/机制可以控制这一点
我还听说了。这是怎么回事?您可以创建5个空文件(名称为“1.lock”、…、“5.lock”),并使应用程序锁定其中一个文件以执行(或在所有文件都已锁定的情况下退出)。首先,我假设您可以交替使用“线程”和“进程”这两个词。两个想法:
帮助您将java程序设置为Windows服务或*nix守护进程。它并没有真正解决您所看到的并发问题——最接近的是一个配置设置,如果它是Windows服务,则不允许并发实例。+1。您可能还需要某种类型的系统来处理所有锁都被锁上而无法再进行工作的情况。还是什么都不做就可以了?当你说“…应用程序锁定…”时,我如何锁定它?你能和我分享一下你关于锁定的想法/方法吗?
http://java.sun.com/javase/6/docs/api/java/nio/channels/FileChannel.html#lock(long,long,boolean)
。您可以通过调用http://java.sun.com/javase/6/docs/api/java/io/FileInputStream.html#getChannel()
。您好,我编写了一个小Java程序来测试这个,但是在运行时我得到了NonWritableChannelException。我在Windows机器上运行这个。String file1=“E:\\Java\\1.lock”;FileInputStream fis1=新的FileInputStream(file1);FileChannel fc1=fis1.getChannel();//fc1.lock(0,1,false);fc1.lock();为了能够打开用于写入的通道,您应该构造一个FileOutputStream并对其调用.getChannel()。阅读FileChannel摘要javadoc中倒数第二段。嗨,Jessup,你说得对。我交替使用了这两个词。我用“我也听说过Java Service Wrapper。这是怎么回事?”再次编辑了这个问题。对此有什么想法/评论吗?@jessup您有没有简单的cron作业脚本来检查当前运行的所有进程?我不是Linux schell脚本方面的专家。或者,给我一些关于这个的链接,-Xms和-Xmx用于配置JVM堆大小,而不是为给定JVM配置足够的heap->OutOfMemoryError。您的程序的每个实例都将在其自己的JVM(进程)中运行,因此,除非一个正在运行的程序影响另一个正在运行的程序的负载,否则运行程序的数量与OutOfMemoryError之间不应有任何关联。。。