【发布时间】:2012-01-20 10:29:27
【问题描述】:
我有一个问题,我们可以使用对象池概念而不是将大尺寸字节数组声明为 20MB。如果是,那么如何?实际上,我有一个声明为byte[] fileData = new byte[2097152];,因为在我们尝试连续访问同一个 java 文件 20 到 24 次后,我必须从应用程序中经常返回 OutOfMemory Exception 的视频文件中读取这么多数据。意味着这不是错误,在这种情况下堆内存已满,GC 无法在给定的时间跨度内清除相同的内存,这就是它返回 OutOfMemory 异常的原因。那么,我们可以在这里使用 ObjectPooling 的 JAVA 概念来提高内存利用率吗?
提前致谢。
【问题讨论】:
-
通常以块的形式处理此类文件,是的。如果您不按顺序处理文件,则可能不得不求助于池加载程序。您正在寻找使用多线程的模式?