我想要做的是将一大组字节移到10个更高的索引。我知道我可以这样轻松地做到这一点:

byte [] bArray = new byte [1000000];
System.arraycopy(bArray, 0 , bArray, 10, 900000 );


但是,在我们的特定代码中,我们每次调用一个方法时都会这样做,并且该方法在我们的代码中将被调用一百万次。这使我们担心内存泄漏,因为这样做会在JVM上进行大量工作以高频率一次又一次地重新分配堆。

最佳答案

System.arraycopy使用起来非常安全-不会导致“泄漏”或以某种方式破坏阵列。这也是在Java中移动大量数据的最有效方法。

而且System.arraycopy与堆管理完全无关-它不会分配任何其他存储。

也就是说,移动大量数据并不是特别有效-它“弄脏”了缓存,导致性能下降。值得考虑采用其他设计。

10-08 02:53