反序列化方法(mapper.readValue)是否分配直接缓冲内存而不是堆内存?

问题描述 投票:0回答:1

我想问你一些关于

ObjectMapper.readvalue()
的事情。

ObjectMapper mapper = new ObjectMapper();

List<ConvertType> responseList = new ArrayList<>();
for (ExampleContent content : iterable) {
    String json = new String(content.getData(), StandardCharsets.UTF_8);
    responseList.add(mapper.readValue(json, ConvertType));

就像上面的代码,我想反序列化并将json数据保存到列表中。

但是,当我重复执行代码时,直接缓冲内存使用量会增加。有时,会出现直接缓冲内存不足的问题。

使用 ObjectMapper 反序列化是否分配直接缓冲区内存而不是堆内存? 如果是这样,如何减少直接缓冲内存的使用量?

java json spring serialization jvm
1个回答
0
投票

ObjectMapper
使用堆内存进行反序列化,而不是直接缓冲内存。直接内存主要用于IO操作。

我建议使用分析工具来识别导致直接内存缓冲区增加的来源,这可能源于应用程序中其他地方的内存泄漏。此外,请确保使用

ObjectMapper
的单个实例,以减少创建新实例的意外情况。

© www.soinside.com 2019 - 2024. All rights reserved.