何时生成堆转储
在我的 Java 应用程序中,当我从脚本的 OutputStream
读取数据时,会生成堆转储文件。我确信我的应用程序中存在内存泄漏。但即使生成堆转储后,导致内存泄漏的线程也不会出现。我没有在 run 方法中捕获 Throwable、Exception、Error 等。
我想知道当我没有指定任何特殊的 VM 参数时,何时生成堆转储文件
-XX:+HeapDumpOnOutOfMemoryError
In my Java application a heap dump file gets generated when I read from the OutputStream
of a script. I am sure about a memory leak in my application. But even after the heap dump got generated, the thread which is causing the memory leak is not coming out. I am not catching Throwable, Exception, Error etc in the run method.
I want to know when the Heap Dump file will get generated when I have not specified any special VM argument like
-XX:+HeapDumpOnOutOfMemoryError
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
AFAIK,只有当您指定该选项时才会自动生成堆转储,至少在 Oracle 的 JVM 中(不知道其他选项,但我怀疑它们会自动生成)。
在大多数情况下,您必须手动触发堆转储生成。
还有一些方法可以以编程方式创建堆转储,但这些方法是 JVM 特定的,并且取决于程序员调用它们的方式和时间。如果使用该选项,那么您必须寻找它,因为它可能在任何地方。
AFAIK, heapdumps are only automatically generated if you specify that option, at least in Oracle's JVM (don't know about the others, but I doubt they do it automatically).
In most cases you have to trigger heap dump generation manually.
There are also ways to programmatically create a heap dump, but those are JVM specific and depend on how and when the programmer calls them. If that option is used then you'd have to look for that as it could be anywhere.