如何在不创建新数组的情况下减小数组大小?

How to reduce array size without creating new?

我正在使用数组来存储一种对象。我创建了一个固定大小的数组

int arr[]=new int[n];

现在,在处理完这个数组后,我想从这个数组中释放最多 75% 的内存(现在只有 n/4 个元素有用)。所以我的问题是,因为 n 非常大,我不希望保留比有用的更大的内存,我如何在运行时减少数组的大小而不复制到大小为 n/4 的新数组(是甚至可能吗?).

这不可能。初始化后不能更改数组的长度。

您可以做的是创建另一个大小合适的数组,并使这个大数组符合垃圾收集器的条件。

如果允许,最好使用 ArrayList

根本不可能。即使您使用集合来创建它们,如果数组大小超过,它们也会将数组元素复制到更新大小的数组!

不,一旦你创建了一个数组,它的大小就固定了。您无法在 运行 时间更改它。对于您当前的场景,您可以将有用的元素复制到新数组中。或者只保留数组而不关心内存。