如何使用visualvm测量Storm拓扑中的内存泄漏?

时间:2016-04-08 16:33:31

标签: java memory-leaks garbage-collection apache-storm

我是Java和Storm“三叉戟”的新手。我在本地模式下运行拓扑时遇到此错误:

OutOfMemoryError: GC overhead limit exceeded
worker died

我安装了虚拟VM程序,但不知道如何使用它?

我应该在运行拓扑期间运行程序吗?

我试图通过以下方式为工人增加记忆力:

 worker.childopts: "-Xmx4048m -XX:MaxPermSize=256m -XX:+PrintGCDetails
-XX:+PrintGCTimeStamps -verbose:gc -Xloggc:/usr/local/storm/logs/gc-storm-
 worker-%6700%.log"

我在代码中使用了3 HashMap s,它有什么问题吗?

enter image description here

2 个答案:

答案 0 :(得分:0)

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/logdir添加到您的JVM args中。然后,在OOM事件分析生成的.hprof文件之后。

答案 1 :(得分:0)

1)尝试限制拓扑中的元组。如果运行基本拓扑,则将topology.max.spout.pending设置为1000;如果运行trident topolgy,则将HashMap设置为100。

2)检查您的代码。您写道,该拓扑结构包含三个<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Text" android:onClick="onClick" android:clickable="true" 。你怎么用它们?也许你插入对象,但不要删除它们,或插入更快,然后删除?