当发生特殊异常时,是否可以创建Java转储?

当发生特殊异常时,是否可以创建Java转储?,java,Java,当发生特殊异常时,是否可以创建Java转储?当异常发生时,我需要检查转储内存,例如当nullpointerexception发生时,它可以自动生成转储。我们知道.net平台有这样一个工具procdump,我不知道Java是否有类似的方法?您可以处理所需的异常,并将下面的代码放入catch中,以便随时捕获堆转储 ObjectName memoryMXBean = new ObjectName("com.sun.management:type=HotSpotDiagnostic"); Object[

当发生特殊异常时,是否可以创建Java转储?当异常发生时,我需要检查转储内存,例如当nullpointerexception发生时,它可以自动生成转储。我们知道.net平台有这样一个工具procdump,我不知道Java是否有类似的方法?

您可以处理所需的异常,并将下面的代码放入catch中,以便随时捕获堆转储

ObjectName memoryMXBean = new ObjectName("com.sun.management:type=HotSpotDiagnostic");
Object[] params = new Object[] { "myHeapDump.hprof", Boolean.TRUE };
String[] signature = new String[] { String.class.getName(), boolean.class.getName() };
Object result = connection.invoke(memoryMXBean, "dumpHeap", params, signature);

您可以处理所需的异常,并将下面的代码放入catch中,以便随时捕获堆转储

ObjectName memoryMXBean = new ObjectName("com.sun.management:type=HotSpotDiagnostic");
Object[] params = new Object[] { "myHeapDump.hprof", Boolean.TRUE };
String[] signature = new String[] { String.class.getName(), boolean.class.getName() };
Object result = connection.invoke(memoryMXBean, "dumpHeap", params, signature);

尝试检查:当抛出此异常时,我将使用调试器和断点。@user1097772,这只是处理OOM异常,但是我们需要捕获任何类型的异常。@Peter,您使用的调试器,有任何详细信息吗?它还可以处理任何异常?在调试器中,当任何特定异常发生时,您可以添加断点来触发。此时,您可以查看您的程序及其所有线程正在执行的操作,以及应用程序中的所有数据。请检查:当引发此异常时,我将使用调试器和断点。@user1097772,这只是处理OOM异常,但我们需要捕获任何类型的异常。@Peter,您使用了哪个调试器,有什么详细信息吗?它还可以处理任何异常?在调试器中,当任何特定异常发生时,您可以添加断点来触发。此时,您可以看到您的程序及其所有线程正在执行的操作,以及应用程序中的所有数据。它需要在可能发生异常的所有位置编写代码,还需要更改代码,但是,我需要在不重写procdump之类的代码的情况下获取转储。@Hermas您可以查看我没有时间对其进行测试,但您可能需要尝试在可能发生异常的所有位置编写代码,并且还需要更改代码,但是,我需要在不重写procdump之类的代码的情况下获取转储。@Hermas您可以查看我没有时间测试相同的内容,但您可以尝试