如何在Java中实现一个对象池,使其在增长时不会产生垃圾?

问题描述 投票:0回答:1

我的Java应用程序由于频繁的对象创建和处置而导致垃圾收集过多,因此我想实现一个对象池来重用对象并减少GC开销。如何设计一个无垃圾对象池,根据应用程序负载动态调整其大小(不创建垃圾)?您能否提供池化策略(尤其是池化增长)的实施示例或指南?

java performance garbage-collection real-time object-pooling
1个回答
0
投票

您可以使用没有固定大小的链表。随着池的增长,您可以不断向其中添加节点。类似这样的东西:

public class ObjectPool<T> {

    private final LinkedList<T> pool = new LinkedList<>();
    private final Creator<T> creator;

    public ObjectPool(Creator<T> creator) {
        this.creator = creator;
    }

    public T acquire() {
        if (pool.isEmpty()) {
            return factory.create();
        }
        return pool.removeFirst();
    }

    public void release(T obj) {
        pool.addLast(obj);
    }

    public interface Creator<T> {
        T create();
    }
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.