Java 8, o primeiro processamento de uma lista é mais lento que o processamento subsequente

Estou executando alguns testes (muito básicos, nada sofisticados) para verificar o desempenho nos fluxos e lambdas do Java 8. Usando umArrayList de 10 milhões de POJOS, tudo o que eu quero fazer é obter o valor médio de umBigDecimal campo. Para coletar mais de uma amostra, eu executo o processo cinco vezes e, para minha surpresa, a primeira dessas cinco execuções é extremamente mais lenta que as demais. Estou recebendo valores como 0,38 segundos na primeira vez e 0,04 segundos nas outras quatro. Isso é 10x mais rápido !!! Eu também fiz o mesmo teste usando a velha escolafor(Pojo p : pojos) com resultados semelhantes. Por que isso está acontecendo e como posso tirar proveito disso? O código que estou usando é:

for (int i = 0; i < 5; i++) {
    long init = System.nanoTime();
    BigDecimal sum = lista.parallelStream().map(x -> x.getCosto()).reduce(BigDecimal.ZERO, BigDecimal::add);
    BigDecimal avg = sum.divide(BigDecimal.valueOf(registros));
    long end = System.nanoTime();
    System.out.println("End of processing: " + avg + " in "
            + ((end - init) / 1000000000.0) + " seconds.");
}