@PostConstruct
public void postConstruct() throws Exception {
this.maxSize = new AtomicLong(bufferProperties.getInitialBufferSize());
this.evictionOccupancyPercentage = new AtomicInteger(Float.floatToIntBits(bufferProperties.getEvictionOccupancyPercentage()));
this.objectSizes.setObjectSecurityExpansionRate(bufferProperties.getObjectSecurityExpansionRate(maxSize.get()));
this.first = new AtomicReference<IBufferElement<E>>(emptyBufferElement);
this.last = new AtomicReference<IBufferElement<E>>(emptyBufferElement);
this.lastAnalyzed = new AtomicReference<IBufferElement<E>>(emptyBufferElement);
this.lastIndexed = new AtomicReference<IBufferElement<E>>(emptyBufferElement);
this.indexingTreeCleaningExecutorService = Executors.newFixedThreadPool(bufferProperties.getIndexingTreeCleaningThreads());
this.flagsSetOnBytes = bufferProperties.getFlagsSetOnBytes(this.maxSize.get());
this.analyzeProcessor = new AnalyzeBufferElementProcessor<>(this, lastAnalyzed, analyzeLock, nothingToAnalyze);
this.indexProcessor = new IndexBufferElementProcessor<>(this, lastIndexed, indexingLock, nothingToIndex);
if (log.isInfoEnabled()) {
log.info("|-Using buffer with maximum size " + NumberFormat.getInstance().format(maxSize) + " bytes...");
log.info("|-Indexing tree maintenance on " + NumberFormat.getInstance().format(flagsSetOnBytes) + " bytes added/removed...");
log.info("|-Using object expansion rate of " + NumberFormat.getInstance().format(objectSizes.getObjectSecurityExpansionRate() * 100) + "%");
}
}