gpt4 book ai didi

java - 是否有 Javolution ArrayFactory 的类似物

转载 作者:行者123 更新时间:2023-12-01 15:14:22 25 4
gpt4 key购买 nike

我的 Android 应用程序需要大量数组。为了防止GC,我开始使用Javolution.arrayFactory .
但是,如果我在一个线程中alloc内存调用,如下所示。

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

并在另一个线程中释放它,如下所示。

ArrayFactory.BYTES_FACTORY.recycle(buffer); 

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

最佳答案

通常有一些方法可以重用它们,而不是动态回收它们,而不是分配大量的 byte[]。

例如假设您有一个 Socket 处理程序对象,并且它有一个 byte[]。您可以创建一次 byte[] 并在连接的整个生命周期内保留它。

您可以将 ByteBuffer 分割在多个位置,以使用相同的字节数组创建多个缓冲区。

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

我曾经回收过很多byte[],但后来在不同的项目中找到了用预分配或长期存在的缓冲区替换所有这些的方法,这样的 CPU 开销要低得多。

关于java - 是否有 Javolution ArrayFactory 的类似物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11840687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com