第一次将Java对象转换为JSON字符串时出现性能问题,第二次工作正常

第一次将Java对象转换为JSON字符串时出现性能问题,第二次工作正常,json,Json,我需要将一个Java对象转换为JSON字符串,在一种情况下它的工作速度非常快(25毫秒),在另一种情况下(2000毫秒)非常慢。这是一段代码: public AuditTrailDetails createAuditTrailDetails(String propertyName, Object oldValue, Object newValue, AuditTrail entity) throws IOException { ObjectMapper objectMapper = po

我需要将一个Java对象转换为JSON字符串,在一种情况下它的工作速度非常快(25毫秒),在另一种情况下(2000毫秒)非常慢。这是一段代码:

public AuditTrailDetails createAuditTrailDetails(String propertyName, Object oldValue, Object newValue, AuditTrail entity) throws IOException {
    ObjectMapper objectMapper = policyManagerObjectMapper.getObjectMapper();
    String oldValueAsJSON = null;
    String newValueAsJSON = null;

    long startTime = System.currentTimeMillis();
    oldValueAsJSON = (oldValue != null) ? objectMapper
        .writeValueAsString(oldValue) : null;
    long endTime = System.currentTimeMillis();
    log.info("Time taken to convert old value into string is: " + (endTime - startTime));

    startTime = System.currentTimeMillis();
    newValueAsJSON = (newValue != null) ? objectMapper
        .writeValueAsString(newValue) : null;
    endTime = System.currentTimeMillis();
    log.info("Time taken to convert new value into string is: " + (endTime - startTime));
}

@Component public class PolicyManagerObjectMapperImpl implements PolicyManagerObjectMapper {

private ObjectMapper objectMapper = new ObjectMapper();

@Override
public ObjectMapper getObjectMapper() {
 return objectMapper;
}
}

此createAuditTrailDetails将从代码中的两个位置调用。在第一种情况下,oldValue被传递给要转换的对象,而newValue被传递为null。转换需要很多时间(2000毫秒)。在第二种情况下,oldValue被传递为null,newValue被传递给要转换的对象。转换速度相当快(25毫秒)。这个迭代进行了2000次,另一个需要提到的是转换后的json字符串的大小是28KB(当它快的时候)和14kb(当它慢的时候),所以它实际上是相反的。json的格式完全相同,只是数据量增加了一倍。我不明白为什么会这样。