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