我是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,它有什么问题吗?
答案 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"
。你怎么用它们?也许你插入对象,但不要删除它们,或插入更快,然后删除?