jProfiler 实时内存所有对象视图
jProfiler Live Memory All object view
我创建了以下简单程序,只是为了在 java 中创建字符串列表时观察对象和内存信息。
进口java.util.ArrayList;
导入 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 -> All Object 视图中显示了以下信息,我无法理解。
创建了多少个char[]实例?我只创建了 1000 个字符串对象,怎么创建了大约 9000 个?
请帮助我解释此探查器信息。
动态内存视图无法回答这个问题。您必须转到堆 walker 和 select 所有 char[]
个实例。然后查看"Cumulated incoming references"视图来分析实例是如何被引用的。
您还可以在启动时使用适当的记录配置文件打开分配记录,然后您可以看到它们的分配位置。
我创建了以下简单程序,只是为了在 java 中创建字符串列表时观察对象和内存信息。
进口java.util.ArrayList; 导入 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 -> All Object 视图中显示了以下信息,我无法理解。
创建了多少个char[]实例?我只创建了 1000 个字符串对象,怎么创建了大约 9000 个?
请帮助我解释此探查器信息。
动态内存视图无法回答这个问题。您必须转到堆 walker 和 select 所有 char[]
个实例。然后查看"Cumulated incoming references"视图来分析实例是如何被引用的。
您还可以在启动时使用适当的记录配置文件打开分配记录,然后您可以看到它们的分配位置。