4
|
Persimmonium · 技术社区 · 15 年前 |
![]() |
1
2
内存不足时,第一个错误只生成一个转储文件。如果你想得到更多,你可以尝试jmap或者在jvm上保留jconsole(版本6),那么你可以在一切崩溃之后,也就是在早上从jconsole(或者你选择的分析器工具)创建你自己的转储文件。 关于倾销的更多内容可以阅读 Eclipse MemoryAnalyser . |
![]() |
2
5
我不会尝试从OutofMemoryError中恢复,因为有些对象可能最终处于未定义的状态(例如,考虑一个不能将其数组分配到存储日期的ArrayList)。 关于您的问题,我怀疑-xx:+heapDumpOnAutofMemoryError只是有意创建一个转储来防止多个堆转储:只需考虑几个线程同时抛出一个OOME,从而为每个抛出的异常生成一个堆转储。 总结一下:不要试图从OOME中恢复,也不要期望JVM写的超过一个堆转储。但是,如果您仍然觉得需要生成堆转储,可以尝试手动处理OOME异常,并调用JMAP来创建转储或使用“-xx:+heapDumponCtrlBreak”(但不确定如何以编程方式模拟CtrlBreak)。 |