【发布时间】:2019-03-08 00:11:26
【问题描述】:
这是一个用于实现 trie 数据结构的有效 java 代码。
class TrieNode {
TrieNode[] arr;
boolean isEnd;
// Initialize your data structure here.
public TrieNode() {
this.arr = new TrieNode[26];
}
我不明白内存分配是如何工作的
TrieNode[] arr;
代码。如果是这样的话
class TrieNode {
int[] arr;
boolean isEnd;
// Initialize your data structure here.
public TrieNode() {
this.arr = new int[26];
}
我知道这会为 26 个整数分配内存。 如果你能解释第一个代码的内存分配是如何工作的,那就更好了。 (在编译器的角度)
编辑:对不起,如果我的问题不清楚。我要问的是我们在
中创建包含 26 个元素的数组new TrieNode[26];
分配了多少内存?
【问题讨论】:
-
在 java 中,所有的引用和实际对象都驻留在内存中。引用是指堆中的对象。现在,当您拥有
new TrieNode[26]时,您有 26 个TrieNode类型的引用(在连续内存中),但实际对象将驻留在不需要连续的堆中。
标签: java class memory-management trie