0

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

提前致谢。

4

1 回答 1

0

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

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

(也就是说,2MB 并不算。如果更容易,只需确保只分配一次,然后重复使用该分配。)

于 2012-01-20T10:35:33.307 回答