Java 有类似于Javolution ArrayFactory的产品吗

Java 有类似于Javolution ArrayFactory的产品吗,java,arrays,pool,Java,Arrays,Pool,我的android应用程序需要很多阵列。为了防止GC,我开始使用。 但是如果我allocmemory在一个线程中调用,如下所示 byte []buffer = ArrayFactory.BYTES_FACTORY.array(size); ArrayFactory.BYTES_FACTORY.recycle(buffer); 然后在另一个线程中释放它,如下所示 byte []buffer = ArrayFactory.BYTES_FACTORY.array(size); ArrayF

我的android应用程序需要很多阵列。为了防止GC,我开始使用。
但是如果我
alloc
memory在一个线程中调用,如下所示

byte []buffer = ArrayFactory.BYTES_FACTORY.array(size); 
ArrayFactory.BYTES_FACTORY.recycle(buffer); 
然后在另一个线程中释放它,如下所示

byte []buffer = ArrayFactory.BYTES_FACTORY.array(size); 
ArrayFactory.BYTES_FACTORY.recycle(buffer); 

然后它会导致内存泄漏。我需要实现数组池的库或类。

通常有重用它们而不是动态回收它们的方法,而不是分配大量字节[]

e、 假设你有一个套接字处理程序对象,它有一个字节[]。您可以创建字节[]一次,并将其保留到连接的生命周期中

您可以将ByteBuffer拆分到多个位置,以使用同一字节数组创建多个缓冲区

或者,您可以使用自己设计的结构(如堆外内存)来存储数据(我怀疑这对JVM比Android更有效)


我过去经常循环使用大量的
字节[]
,但随着时间的推移,我在不同的项目上找到了方法,用预先分配的或长寿命的缓冲区替换所有字节[],这样可以大大降低CPU开销。

我从未指责过你直接持有硬引用。。。我的英语不是很好,也许我看错了你。你知道模拟阵列工厂吗?别担心,朋友;我不是有意冒犯你的。“泄漏”是因为分配器故意不释放对象。您使用的是
HeapContext
还是
eventhercontext
?我怀疑泄漏在
FastMap
底层
FACTORY\u-TO\u分配器中。然后,每个
HeapLocator
维护通过它发布的每个对象的
FastTable
,其中包括通过
ArrayFactory.release发布的数组
PoolContext.exit()用于我的线程,现在我的应用程序可以工作10分钟以上。10tx。