Java 或 JIT 编译器在参数不变时优化​​ Arrays.asList 吗?

Do the Java or JIT compilers optimise Arrays.asList when the parameters are unchanged?

例如:Arrays.asList("1", "2", "3")

这会在应用程序的生命周期中每次调用时创建一个新数组(用于可变参数)和一个新的 ArrayList 吗?

returned 列表是可变的。这必须 return 每次调用都有不同的列表。

据我所知,对于带有 Varargs java 的方法,将创建一个临时数组并将其发送给方法。所以用这个方法实现:

public static <T> List<T> asList(T... a) {
    return new ArrayList<>(a);
}

创建新的 ArrayListArrayList 的构造函数:

private final E[] a;

ArrayList(E[] array) {
    a = Objects.requireNonNull(array);
}

因此新 ArrayList 包含对列表对象的引用或 Varargs 发送到方法。
我认为数组和Varargs没有区别。对于 Varargs 编译器将创建一个临时数组,并且在 运行 时间内没有太大区别。
然而,JVM 之间总是存在差异,您必须了解它,但我认为 Varargs 和普通数组之间没有差异。