2013-02-12 58 views
0

我在Linux機器中使用Tomcat服務器獲取「OutOfMemoryError:超出GC開銷限制」。請讓我知道是否有任何工具可以幫助我分析Java應用程序中的哪個程序佔用大量內存。我們是否有任何調試工具可以提供一些信息來了解tomcat服務器在哪裏出現此錯誤?獲取OutOfMemoryError:Linux機器中的Tomcat服務器超出GC開銷限制

在此先感謝。

+1

JDK帶有一個開箱即用的工具:'jvisualvm'。 – 2013-02-12 14:40:01

+0

請檢查它是否有用http://stackoverflow.com/questions/14762/please-recommend-a-java-profiler – sundar 2013-02-12 14:44:34

+0

當我在Linux中運行命令時,我得到cmmand找不到錯誤:'-bash-3.2 $ jvisualvm -bash:jvisualvm:找不到命令' – Chaitanya 2013-02-12 16:25:57

回答

2

確保您設置了命令行參數:-XX:+ HeapDumpOnOutOfMemoryError以在OOM上進行堆轉儲。也可以使用:-XX:HeapDumpPath = < 堆轉儲文件夾>。

當發生OOM時,您可以使用MAT分析堆轉儲。這是分析堆轉儲非常有用的工具。您可以使用jmap手動進行堆轉儲。例如:jmap -dump:file=<output-filename> <java process id>

+0

感謝您的回覆。當我通過傳遞processid作爲輸入來運行jmap命令時,出現錯誤。請幫助如何解決此問題:'-bash-3.2 $ jmap 10865 附加到進程ID 10865,請稍候... 線程「main」中的異常java.lang.reflect.InvocationTargetException引起者:sun.jvm.hotspot .runtime.VMVersionMismatchException:支持的版本是20.0-b11。目標VM是14.3-b01 ' – Chaitanya 2013-02-12 16:30:28

+0

@ user2065083這裏http://java-monitor.com/forum/showthread.php?t=974幾個食譜如何解決你的問題。確保你運行的jmap與你使用堆轉儲的Java版本相同。 – Taky 2013-02-13 05:22:04

相關問題