首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有与Javolution ArrayFactory类似的功能

是否有与Javolution ArrayFactory类似的功能
EN

Stack Overflow用户
提问于 2012-08-07 14:50:03
回答 1查看 251关注 0票数 0

我的android应用程序需要很多数组。为了防止GC,我开始使用Javolution.arrayFactory

但是如果我在一个线程中调用alloc内存,就像下面这样。

代码语言:javascript
复制
byte []buffer = ArrayFactory.BYTES_FACTORY.array(size); 

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

代码语言:javascript
复制
ArrayFactory.BYTES_FACTORY.recycle(buffer); 

那么它就会导致内存泄漏。我需要库或者只是实现数组池的类。

EN

回答 1

Stack Overflow用户

发布于 2012-08-07 16:20:46

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

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

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

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

我过去常常回收大量的byte[],但随着时间的推移,我在不同的项目中找到了用预先分配或长期使用的缓冲区替换它们的方法,这大大降低了CPU的开销。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11840687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档