【发布时间】:2023-03-31 05:53:01
【问题描述】:
我必须在我的 Java 程序中存储数百万个 X/Y 双对以供参考。我想保持尽可能低的内存消耗以及对象引用的数量。所以经过一番思考,我决定将这两个点保存在一个很小的双数组中可能是个好主意,它的设置如下所示:
double[] node = new double[2];
node[0] = x;
node[1] = y;
我认为使用数组会阻止类与类中使用的 X 和 Y 变量之间的链接,如下所示:
class Node {
public double x, y;
}
然而,在阅读了类中公共字段的存储方式之后,我突然意识到,字段实际上可能不是像指针一样的结构,也许 JVM 只是将这些值存储在连续的内存中,并且知道如何在没有它们的情况下找到它们一个地址,从而使我的点的类表示小于数组。
所以问题是,哪个内存占用更小?为什么?
我对类字段是否使用指针特别感兴趣,因此是否有 32 位开销。
【问题讨论】: