Java program is executing in Hadoop cluster. It got OutOfMemoryError during the execution and process stopped. I want to analyze the killed java process for memory & other details. Where i can find the killed process log files? I used sar utility to analysis the memory but it shows only system memory instead of process memory.
答案 0 :(得分:1)
您可以使用-XX:ErrorFile=<your location>/hs_err_pid<pid>.log
作为JVM参数来设置hs_error
文件位置。
答案 1 :(得分:0)
首先,您的JVM可能还没有为您的应用程序配置足够的堆大小。
那就是说,根据我的经验,我有一点建议。我认为您应该启用这些标志来调查哪些对象占用了太多空间。
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=path
第一个标志是在OOM异常的情况下转储堆,第二个标志是设置JVM保存转储文件的路径。
获取堆转储文件后,您应该使用Memory Analyzer Tool(https://www.eclipse.org/mat/)来查看应用程序可能导致的内存泄漏。
此外,测量GC过程非常重要,您可以使用这些标记来完成此操作。
-XX:+PrintReferenceGC
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -
XX:+PrintTenuringDistribution -XX:+PrintAdaptiveSizePolicy
-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M -
Xloggc:/some/where/gc.log
可以使用此在线工具分析GC.log