捕获Java中的OutOfMemoryError

捕获Java中的OutOfMemoryError,java,out-of-memory,spark-dataframe,parquet,Java,Out Of Memory,Spark Dataframe,Parquet,我想写一个大文件,但我得到了预期的OutOfMemoryError。我想返回一条关于OutOfMemoryError的消息。我使用了try catch,但它无法捕获错误。请建议您的文件有多大,您的Xmx有多大 处理查找OutOfMemoryError原因的最佳方法是使用jvm参数运行程序-XX:+heapdumpOnAutofMemoryError。这将以.hprof文件的形式生成heapdump。然后,您可以使用Java内存分析器分析该文件,以查看内存泄漏的位置 我知道这听起来没什么帮助,但一

我想写一个大文件,但我得到了预期的
OutOfMemoryError
。我想返回一条关于
OutOfMemoryError
的消息。我使用了
try catch
,但它无法捕获错误。请建议您的文件有多大,您的Xmx有多大


处理查找OutOfMemoryError原因的最佳方法是使用jvm参数运行程序
-XX:+heapdumpOnAutofMemoryError
。这将以.hprof文件的形式生成heapdump。然后,您可以使用Java内存分析器分析该文件,以查看内存泄漏的位置

我知道这听起来没什么帮助,但一旦JVM内存不足,就不能依靠它做任何事情。有什么方法可以阻止OutOfMemory错误的发生吗?支持David的说法。您需要首先调查导致
OutOfMemoryError
的原因,因为它(几乎)总是用户错误。您能否提供一个展示您所描述行为的最简单示例?您可以
捕获异常,而不是错误。异常是一个(可能)可恢复的问题。错误——一个你无能为力的更大的问题。如果发生OutOfMemory,如果你被允许抓住它,你会怎么做?那时你还没有记错。如果不使用内存(即使内存量很低),您无法释放任何内容。目前,我不需要处理错误。现在,对于每个任务,都会更新状态(如果拼花地板文件已成功写入)。如果写入时出现任何错误,我需要将状态设置为失败。但我没能抓住这个例外。这是我的代码片段:dfTask.write().mode(SaveMode.Append).parquet(filePath);失败时,我需要通过句柄发送消息,我的意思是找到导致错误的原因。