import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
public class LowGCMemoryQueue<T> {
private final BlockingQueue<T> queue;
public LowGCMemoryQueue(int maxSize) {
this.queue = new LinkedBlockingQueue<>(maxSize);
}
public void put(T element) {
queue.offer(element);
}
public T take() {
return queue.poll();
}
}
LowGCMemoryQueue<Integer> queue = new LowGCMemoryQueue<>(10000);
ExecutorService executor = Executors.newFixedThreadPool(10);
-Xmx2g -Xms2g -XX:+UseG1GC