diff --git a/jetty-io/src/main/java/org/eclipse/jetty/io/ByteBufferPool.java b/jetty-io/src/main/java/org/eclipse/jetty/io/ByteBufferPool.java index 2c67e29fdc6a..e752453475ee 100644 --- a/jetty-io/src/main/java/org/eclipse/jetty/io/ByteBufferPool.java +++ b/jetty-io/src/main/java/org/eclipse/jetty/io/ByteBufferPool.java @@ -15,9 +15,9 @@ import java.nio.ByteBuffer; import java.util.ArrayList; +import java.util.Deque; import java.util.List; -import java.util.Queue; -import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.ConcurrentLinkedDeque; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import java.util.function.Consumer; @@ -149,7 +149,7 @@ public void release(ByteBuffer buffer) public static class Bucket { - private final Queue _queue = new ConcurrentLinkedQueue<>(); + private final Deque _queue = new ConcurrentLinkedDeque<>(); private final int _capacity; private final int _maxSize; private final AtomicInteger _size; @@ -209,7 +209,7 @@ void clear(Consumer memoryFn) private void queueOffer(ByteBuffer buffer) { - _queue.offer(buffer); + _queue.offerFirst(buffer); } private ByteBuffer queuePoll() diff --git a/tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/ArrayByteBufferPoolBenchmark.java b/tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/ArrayByteBufferPoolBenchmark.java deleted file mode 100644 index 098e50f8a4db..000000000000 --- a/tests/jetty-jmh/src/main/java/org/eclipse/jetty/util/ArrayByteBufferPoolBenchmark.java +++ /dev/null @@ -1,67 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2021 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under the -// terms of the Eclipse Public License v. 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 -// which is available at https://www.apache.org/licenses/LICENSE-2.0. -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -package org.eclipse.jetty.util; - -import java.nio.ByteBuffer; - -import org.eclipse.jetty.io.ArrayByteBufferPool; -import org.eclipse.jetty.io.ByteBufferPool; -import org.openjdk.jmh.annotations.Benchmark; -import org.openjdk.jmh.annotations.Scope; -import org.openjdk.jmh.annotations.Setup; -import org.openjdk.jmh.annotations.State; -import org.openjdk.jmh.annotations.TearDown; -import org.openjdk.jmh.runner.Runner; -import org.openjdk.jmh.runner.RunnerException; -import org.openjdk.jmh.runner.options.Options; -import org.openjdk.jmh.runner.options.OptionsBuilder; - -@State(Scope.Benchmark) -public class ArrayByteBufferPoolBenchmark -{ - private ByteBufferPool pool; - - @Setup - public void setUp() throws Exception - { - pool = new ArrayByteBufferPool(); - } - - @TearDown - public void tearDown() - { - pool = null; - } - - @Benchmark - public void testAcquireRelease() - { - ByteBuffer buffer = pool.acquire(2048, true); - pool.release(buffer); - } - - public static void main(String[] args) throws RunnerException - { - Options opt = new OptionsBuilder() - .include(ArrayByteBufferPoolBenchmark.class.getSimpleName()) - .warmupIterations(3) - .measurementIterations(3) - .forks(1) - .threads(8) - // .addProfiler(GCProfiler.class) - .build(); - - new Runner(opt).run(); - } -}