避免Java中的数组初始化

时间:2016-06-11 16:33:20

标签: java arrays unsafe

是否可以避免Java中的数组清零/初始化?

我需要快速分配固定长度的新字节数组,这些数组将完全填充预定义数据。因此,我不需要JVM在实例化时自动将数组归零,我当然不介意数组是否包含垃圾。我需要的是恒定时间数组分配,由于提到的归零问题,遗憾的是它变为O(n)。

会使用不安全的帮助吗?

3 个答案:

答案 0 :(得分:1)

JVM始终初始化数组。但是你可以重复使用相同的数组,它将被初始化一次。

答案 1 :(得分:1)

班级sun.misc.Unsafe正式无证。

来自http://mishadoff.com/blog/java-magic-part-4-sun-dot-misc-dot-unsafe/

  

避免初始化

     当您需要跳过对象时,

allocateInstance方法非常有用   初始化阶段或旁路安全检查在构造函数或您   想要该类的实例,但没有任何公共构造函数。

一些资源表明它已从Java 9中删除。

答案 2 :(得分:0)

  1. 你有什么样的应用程序,数组初始化成为性能瓶颈?
  2. 回应“遗憾的是我不能,因为异步网络库会在一段不确定的时间内保留这些数组。重用它们会导致覆盖部分未发送的消息。”: 然后使用池并仅重用当前未使用的阵列。但是你必须管理它。那么,阵列创建真的是一个很大的问题吗?