無爆Java Heap size Memory,但爆 Actual PC memory

想問各位高手,本人寫了一個JavaFX application 不停monitor一些事情。
問題Heap Memory沒有爆,但actual memory in PC 就不停升,直至out of PC memory,請大家有何方法可以解決?
程式是用WebView去檢查某個網頁。

        public void deleteCache() {
                webEngine.load(null);
                // Delete cache for navigate back
                webEngine.load("about:blank");
                // Delete cookies
                java.net.CookieManager manager = new java.net.CookieManager();
                java.net.CookieHandler.setDefault(manager);
                manager.getCookieStore().removeAll();
        }
用了以上程式碼亦不能解決!除非Close application,d memory才release

常試用VisualVM去檢查 Heap memory一切正常(沒有out of memory)!
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

想問各位高手,本人寫了一個JavaFX application 不停monitor一些事情。
問題Heap Memory沒有爆,但actual m ...
jackso 發表於 2015-9-29 16:04



    就咁睇,似係你啲 Thread 入面有 Object 未 Release reference, 令到你每次做 Request 開嘅 Thread 都唔可以做 GC ,個 System 愈行愈多 「死Thread」卡住食哂啲 RAM

TOP

師兄謝謝你回覆先!不過已經check過,因為動作重覆,Object基本上都係重用,至於其他insertstatement,connection和bufferedreader,全部都有close!上網search左好耐,試過照做但唔出Webview,一行System.gc()已經可以回收RAM,似乎係Javafx  application thread 無release ram!但想問師兄有沒有辦法睇到係咩object 未release reference, 從VisualVM只見到用得最多RAM係byte[]。

TOP

係咪不停開新FILE? OR stream?

TOP

回覆 4# 景太郎

不停load webview 和 BufferedReader read webpage source,但reader 最後都有 reader.close()

main.webViewController.loadPage(urlLink);

BufferedReader reader = new BufferedReader(new StringReader(main.webViewController.getPageContent()));

始終找不到原因!

TOP

System.gc只係會將無指向任何pointer既object release
如果object本身本身hold住就release唔到
應該用Memory Analysis黎睇下個object count係唔係一直變大
同埋有無d memory leak

TOP

用 TLS?

TOP

你喺邊度睇system memory usage 因為你個 javafx program 而升?

TOP

我唔知webengine個implementation 係點. 但有D 野可以睇, 你係咪每次都 new 一個webengine 去做野? 如果係, 試下用番同一個. 行另一個website 有冇問題?
再唔係你試下用傳統嗰D lib , eg, httpclient 去做.

TOP