我可以強制運行Java應用程序從垃圾收集從控制檯?我可以強制運行Java應用程序從控制檯垃圾收集
只是爲了搶佔一些回覆:
- 我知道我可以JVisualVM做,但我只有控制檯訪問不 X-Windows訪問
- 我知道的System.gc()只要求垃圾收集它並沒有強制 它,但那似乎3.工作,所以我尋找一種方式呼籲 externaly。
- 我知道你不應該垃圾收集工作應用程序,我做 這是檢查潛在內存泄漏的過程的一部分。
- 應用在生產中runinng我不能修改其 管環境,JVM ecetera
我可以強制運行Java應用程序從垃圾收集從控制檯?我可以強制運行Java應用程序從控制檯垃圾收集
只是爲了搶佔一些回覆:
JVisualVM可以連接到遠程進程,如果
所以你並不需要在在同一臺機器上的xWindows環境使魔法發生...
示例或參數傳遞給java
-Dcom.sun.management.jmxremote.port=9005\
-Dcom.sun.management.jmxremote.authenticate=false\
-Dcom.sun.management.jmxremote.ssl=false
號。你不能強迫垃圾收集器執行垃圾收集。使用System.gc(),您只能請求垃圾回收器執行垃圾回收。
你顯然沒有讀過我的第二點。 –
創建一個只執行System.gc()的簡單Java代理。 使用其pid附加到目標JVM並運行它。 從這裏開始: http://docs.oracle.com/javase/6/docs/jdk/api/attach/spec/com/sun/tools/attach/VirtualMachine.html
Thankyou實際上試圖回答我的問題,但是在jdk中是否存在這樣的程序,而不是我必須寫我自己的? –
實際上,來自JDK的jmap工具將觸發完整的GC。試試jmap histo
在我們的JVM上,它似乎只有在運行jmap histo時纔會觸發完整的GC:live。 –
你有沒有看到這個? http://stackoverflow.com/questions/1481178/forcing-garbage-collection-in-java –
要檢查潛在的內存泄漏,您還必須查看收集後使用了多少內存。對於這個VisualVM是最簡單的,所以使用它。 –
[Duplicate](http://stackoverflow.com/questions/3523837/how-do-you-force-garbage-collection-from-the-shell)詳細介紹瞭如何做到這一點。 –