0
我有一个java程序,每分钟检查一次数据库,看看是否需要监视某个网站。如果符合条件,我使用ProcessBuilder将网站URL传递到我的其他Java程序(可运行jar)中,并按照我的预期监控网站。从主java程序启动监视器
但是,这似乎是造成巨大的内存泄漏。我似乎得到了“Java内存异常”,即使只有少数网站受到监视......我想知道是否有更好的方法来做到这一点,而不是从JAR中调用JAR。
这是我目前正在揭开序幕网站监测:
if(URL.length() > 1) {
ProcessBuilder builder = new ProcessBuilder("java", "-jar", "/usr/opt/monitor/Monitor.jar", URL);
builder.redirectErrorStream(true);
builder.redirectOutput(new File("/usr/opt/logs/Monitor.log"));
Process p = builder.start();
任何人都可以请建议实现这一目标,请更好的方法?线程?直接从Monitor.jar调用该类?
首先你需要找到内存泄漏的来源。只有然后尝试修复它。 – talex
如果您的要求之一是要有单独的应用程序,那么您可以使用JMS队列,每当需要监视网站时应用程序将发布消息,并让另一个应用程序订阅此队列,并创建一个线程(使用您的监控逻辑)收到的每条消息。 – Maaaatt
每个进程都有自己的内存空间,因此您需要检查哪个进程导致内存不足,需要分析该应用程序,我认为这与监视进程的启动方式无关。 – OTM