System.arraycopy是一种有效的内存转移和堆使用方式吗?

时间:2013-07-15 23:39:59

标签: java memory-management jvm

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

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

然而,在我们的特定代码中,每次调用方法时我们都会这样做,并且在我们的代码中该方法将被称为百万次。这让我们担心关于内存泄漏,因为这将在JVM上进行大量工作,以高频率反复重新分配

1 个答案:

答案 0 :(得分:4)

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

System.arraycopy与堆管理没有任何关系 - 它不会分配任何额外的存储空间。

也就是说,移动大量数据并不是特别有效 - 它会“污染”缓存,导致性能爬行。值得考虑不同的设计。