由于使用 Jackson 将 Java 对象序列化为字符串而导致 OutOfMemoryError

sch*_*hau 7 java out-of-memory jackson

我正在使用ObjectMapperJackson 将 Java 对象转换为字符串,以便将其写入我的日志文件中。
转换方法如下所示:

private String getResponseAsString(OrderResponse response) {
        ObjectMapper mapper = new ObjectMapper();
        try {
            return mapper.writeValueAsString(response);
        } catch (JsonProcessingException e) {
            log.error("Error when converting response:" + getExceptionMessage(e));
            return "Error when converting response";
        }
}
Run Code Online (Sandbox Code Playgroud)

运行程序后,我发现它OutOfMemoryError: Java Heap Space在此方法上引发了错误:

抛出异常所以我认为我的程序内存不足。我读过一些文章,说我可以通过增加内存来解决这个问题。但现在当我检查设置时,我的计算机中的默认Xmx已经接近 4GB,所以我不想再增加它。

谁能给我一个提示,如何通过将对象转换为字符串方法替换为具有相同功能的另一个方法来节省内存?或者有人有其他想法/方法来克服这个问题。

Fai*_*ram 1

你有一个很重的java对象,你需要将一个java对象写入文件中。并点击链接“Click Here”

 private File getResponseAsString(OrderResponse response) throws JsonGenerationException, JsonMappingException, IOException {
    ObjectMapper mapper = new ObjectMapper();
    File file = new File("D:/cp/dataOne.json");
    mapper.writeValue(file, response);
    return file;
}
Run Code Online (Sandbox Code Playgroud)