java - 指向数组的 Java 堆栈会使用相同数量的内存吗?

标签 java

我有一个二叉树 Node s 并想要遍历它。我看到的最常见的方法是 Stack ,或 LinkedList 。我还看到了其他不添加每个 Node 的方法到堆栈/列表,并且似乎几乎不占用内存(他们使用递归来探索每个元素)。

如果我做一个List<Node>为了跟踪树中的每个节点,我会占用 2*n内存量?或者,因为对象已经存在于树中,List是否只是一堆指向Node对象(存在于树中)的指针,因此不会占用两倍的内存?

测试用例:

Object objs[] = new Object[40];
/* 
    Initialize the 40 objects here 
*/
List<Object> objTracker = new List<>();
for(int i=0; i<objs.length; i++) {
    objTracker.add(objs[i]);
}

现在是否占用 2 倍的内存,或者执行所有 objTrackers只需重定向/指向存储在 objs 中的对象?

最佳答案

只有在使用 new 时才创建新对象关键字(一般而言)。因为没有newobjTracker.add(objs[i]); ,没有创建新对象。

关于java - 指向数组的 Java 堆栈会使用相同数量的内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47257399/

相关文章:

java - 在区域设置 'pl_PL' 的代码下未找到消息

java - 安装 JBoss 后 Eclipse 不断崩溃

java - Mysql查询中答案为真、假

java - Bicycle[]::new 的等价物是什么

java - Spring Batch 上下文持有者 null

java - 非静态的 java final 变量的命名约定

java - 计算Java中两个日期之间的天数

java - Spring Sleuth - JMS ErrorHandler 上的跟踪中断

java - Camel 进程不会因为(不存在的)机上交换而关闭

java - 显示 jar 文件中的图像