在我的计划中,我正在做:
private static final ObjectMapper MAPPER = new GridJettyObjectMapper();
....
JsonNode node = MAPPER.readTree(content);
我的JSON包含很多SAME字符串,我想拦截readTree()方法并放入TextNodes缓存的字符串(例如使用WeakHashMap)。
我希望这会为我节省很多钱。现在我的应用程序只是OOME,在堆转储中我在TextNodes中看到数百万个相同的字符串。
知道怎么做吗?
答案 0 :(得分:0)
经过一些调试后,我更换了
JsonNode node = MAPPER.readTree(content);
与
Pojo p = MAPPER.readValue(Pojo.class, new PojoDeserializer());
在PojoDeserializer逻辑中实现,不生成许多TextNodes。 我使用了JsonParser流API。