作者: jackso 時間: 2015-9-29 16:04 標題: 無爆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)!
[attach]1830379[/attach]
作者: hihihi123hk 時間: 2015-10-3 15:21
想問各位高手,本人寫了一個JavaFX application 不停monitor一些事情。
問題Heap Memory沒有爆,但actual m ...
jackso 發表於 2015-9-29 16:04
就咁睇,似係你啲 Thread 入面有 Object 未 Release reference, 令到你每次做 Request 開嘅 Thread 都唔可以做 GC ,個 System 愈行愈多 「死Thread」卡住食哂啲 RAM
作者: jackso 時間: 2015-10-3 21:04
師兄謝謝你回覆先!不過已經check過,因為動作重覆,Object基本上都係重用,至於其他insertstatement,connection和bufferedreader,全部都有close!上網search左好耐,試過照做但唔出Webview,一行System.gc()已經可以回收RAM,似乎係Javafx application thread 無release ram!但想問師兄有沒有辦法睇到係咩object 未release reference, 從VisualVM只見到用得最多RAM係byte[]。
作者: 景太郎 時間: 2015-10-9 00:02
係咪不停開新FILE? OR stream?
作者: jackso 時間: 2015-10-10 00:49
回覆 4# 景太郎
不停load webview 和 BufferedReader read webpage source,但reader 最後都有 reader.close()
main.webViewController.loadPage(urlLink);
BufferedReader reader = new BufferedReader(new StringReader(main.webViewController.getPageContent()));
始終找不到原因!
作者: gakko 時間: 2015-10-10 10:19
System.gc只係會將無指向任何pointer既object release
如果object本身本身hold住就release唔到
應該用Memory Analysis黎睇下個object count係唔係一直變大
同埋有無d memory leak
作者: henrywho 時間: 2015-10-13 10:30
用 TLS?
作者: bugtester 時間: 2015-10-13 18:08
你喺邊度睇system memory usage 因為你個 javafx program 而升?
作者: bugtester 時間: 2015-10-13 18:20
我唔知webengine個implementation 係點. 但有D 野可以睇, 你係咪每次都 new 一個webengine 去做野? 如果係, 試下用番同一個. 行另一個website 有冇問題?
再唔係你試下用傳統嗰D lib , eg, httpclient 去做.

