我创建了以下简单程序,只是为了在java中创建String列表时观察对象和内存信息。
import java.util.ArrayList; import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> strObj = new ArrayList<String>();
for (int i = 0; i < 1000; i++) {
strObj.add("abc");
}
}
}
但jProfiler向我展示了Live Memory中的以下信息 - &gt;我无法理解的所有对象视图。
如何创建这么多char []实例?我只创建了1000个String对象,如何创建大约9000个?
请帮我解释一下这个分析器信息。
答案 0 :(得分:1)
动态内存视图无法回答此问题。您必须转到堆walker并选择所有char[]
个实例。然后查看&#34;累积的传入引用&#34;查看以分析实例的引用方式。
您还可以在启动时使用适当的录制配置文件打开分配录制,然后您可以看到它们的分配位置。