我使用Jackson的ObjectMapper
将Java对象转换为String,以便将其写入日志文件。
转换方法如下所示:
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";
}
}
在我运行程序之后,我发现它在这个方法上抛出了OutOfMemoryError: Java Heap Space
错误:
x1c 0d1x,所以我认为我的程序内存不足。我看过一些文章,我可以通过增加内存来解决这个问题。但现在当我检查设置时,我的计算机中的默认 Xmx 已经接近4GB,所以我不想再增加它。
有没有人能给我一个提示,告诉我如何通过用另一个具有相同功能的方法替换这个将Object转换为String的方法来节省内存?或者有没有人有其他的想法/方法来克服这个问题。
2条答案
按热度按时间mqkwyuun1#
我也遇到了同样的问题,你试图把一个很大的对象转换成一个字符串。在Java中,String对象的长度是有限制的,因此它可以存储的内存也是有限制的。请参考answer。
在我的方案中,我能够通过使用
new ObjectMapper().writeValueAsBytes(response)
根据我的理解,增加堆空间是没有帮助的,它确实对我不起作用。
s4chpxco2#
你有一个很重的java对象,你需要把一个java对象写入到文件中。