我们可以使用Object Pooling概念而不是声明大字节数组吗?

时间:2012-01-20 10:29:28

标签: android object-pooling

我有一个问题,我们可以使用对象池概念,而不是将大型字节数组声明为20MB。如果是,那么如何?实际上我有byte[] fileData = new byte[2097152];的声明,因为我必须从视频文件中读取那么多数据,在我们尝试连续播放相同的java文件20到24次之后,在应用程序中经常返回OutOfMemory Exception。意味着这不是错误,在这种情况下,堆内存已满,GC无法在给定的时间跨度内清除它,这就是它返回OutOfMemory Exception的原因。那么,我们可以使用JAVA的 ObjectPooling 概念来提高内存利用率。

提前致谢。

1 个答案:

答案 0 :(得分:0)

你正试图解决错误的问题......你应该专注于不将整个2MB文件加载到RAM中,因为你真的不需要这样做。

在RAM中创建一个小窗口,64KB说,然后一块一块地加载文件。这就是视频播放器等所做的事情。

(也就是说,2MB不是 那么多。如果它更容易,只需确保你只分配一次并在此后重复使用该分配。)