我已经分析了一个简单的程序,如下所示,发现要创建大量的 char[] 实例。读到这里 char[] 实例通常归因于字符串,我看不出这个程序是怎么回事。我知道 Thread 类中有一个 char[] 'name' 变量,但肯定应该只创建其中的 10,000 个,所以我想知道额外的 35,000 个线程是从哪里来的?
public class untitled {
public static void main(String args[]){
ArrayList<Thread> a = new ArrayList<Thread>();
for(int i = 0; i < 10000; i++){
Thread t1 = new Thread();
a.add(t1);
t1.start();
}
}
}
这是分析内存结果的屏幕截图。似乎还有许多 String[] 实例。
我使用这个程序来隔离分析器的其他部分。在完整程序中,char[] 实例增加到 ~335,000