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

Java 如何使用visualvm测量Storm拓扑中的内存泄漏?,java,memory-leaks,garbage-collection,apache-storm,Java,Memory Leaks,Garbage Collection,Apache Storm,我不熟悉爪哇和风暴“三叉戟”。在本地模式下运行拓扑时,我遇到此错误: OutOfMemoryError: GC overhead limit exceeded worker died 我安装了虚拟虚拟机程序,但不知道如何使用它 我应该在运行拓扑时运行程序吗 我试图通过以下方式增加工人的记忆: worker.childopts: "-Xmx4048m -XX:MaxPermSize=256m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbose

我不熟悉爪哇和风暴“三叉戟”。在本地模式下运行拓扑时,我遇到此错误:

OutOfMemoryError: GC overhead limit exceeded
worker died
我安装了虚拟虚拟机程序,但不知道如何使用它

我应该在运行拓扑时运行程序吗

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

 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,有什么问题吗


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

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

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

2) 检查你的代码。您写道,该拓扑包括三个
HashMap
。你如何使用它们?也许您插入了对象,但没有删除它们,或者插入的速度比删除的快得多?

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


2) 检查你的代码。您写道,该拓扑包括三个
HashMap
。你如何使用它们?也许您插入了对象,但没有删除它们,或者插入的速度比删除快得多?

谢谢您的帮助,但是请告诉我在哪里可以添加这一行-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/path/to/logdir?什么是OOM?OOM-OutOfMemoryError,以及您添加到启动java应用程序部分的
-XX
选项。您可以通过查找一个在中包含例如
-Xmx4048m
的文件来找到放置这些文件的位置it@krzyk谢谢你的帮助,但是请问我在哪里可以添加这一行?我使用mvn compile exec:java-Dexec.classpathScope=compile-Dexec.mainClass=trident.FCS这样的mvn命令运行该项目,您的意思是在这个命令中编写还是在哪里?提前感谢您需要将
-Dexec.args=“-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/path/to/logdir”
添加到您的command@krzyk我现在正在运行代码并打开VisualVM,我在帖子中编辑了到目前为止我得到的截图,程序仍在运行,几个小时后会抛出这个错误,我应该在命令或程序中添加上述行吗?非常感谢您的时间,请问在哪里可以找到hprof文件?谢谢您的帮助,但是请告诉我在哪里可以添加这一行-XX:+heapdumponAutofmemoryError-XX:HeapDumpPath=/path/to/logdir?什么是OOM?OOM-OutOfMemoryError,以及您添加到启动java应用程序部分的
-XX
选项。您可以通过查找一个在中包含例如
-Xmx4048m
的文件来找到放置这些文件的位置it@krzyk谢谢你的帮助,但是请问我在哪里可以添加这一行?我使用mvn compile exec:java-Dexec.classpathScope=compile-Dexec.mainClass=trident.FCS这样的mvn命令运行该项目,您的意思是在这个命令中编写还是在哪里?提前感谢您需要将
-Dexec.args=“-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/path/to/logdir”
添加到您的command@krzyk我现在正在运行代码并打开VisualVM,我在帖子中编辑了到目前为止我得到的截图,程序仍在运行,几个小时后会抛出这个错误,我应该在命令或程序中添加上述行吗?真的非常感谢您的时间,请问我在哪里可以找到hprof文件?谢谢,我想第二点是问题所在,我没有删除它们,只是我想计算推文的字数,所以我将它们存储在hashmap中,然后在我的等式中使用它们,我应该在哪里删除它们?您的bolt execute方法的Post代码,还有下三个喷口。谢谢回复。我使用的是Trident,它不包含喷口或螺栓。谢谢,我认为第二点是问题所在,我没有删除它们,只是想计算推文的字数,所以我将它们存储在hashmap中,然后在公式中使用它们,我应该在哪里删除它们?您的螺栓执行方法的Post代码,还有下三个喷口。谢谢回复。我用的是三叉戟,它没有喷嘴或螺栓。