Give me an Example

Let us look at a demo application suffering from premature promotion. This app obtains chunks of data, accumulates them, and, when a sufficient number is reached, processes the whole batch at once:

public class PrematurePromotion {

   private static final Collection<byte[]> accumulatedChunks = new ArrayList<>();

   private static void onNewChunk(byte[] bytes) {

       if(accumulatedChunks.size() > MAX_CHUNKS) {

The demo application is impacted by premature promotion by the GC. The ways to verify and solve the issue are given in the next sections.