gpt4 book ai didi

java - 分析程序时出现大量 char[] 实例

转载 作者:行者123 更新时间:2023-12-02 09:05:48 26 4
gpt4 key购买 nike

我分析了一个简单的程序,如下所示,发现需要创建大量 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[] 实例。

enter image description here

我使用这个程序来隔离探查器的其他一些部分。在完整的程序中,char[] 实例增加到约 335,000

最佳答案

您必须使用堆遍历器才能回答这个问题。在堆遍历器的类 View 中选择 char[] 类并创建一个新的对象集。然后转到引用 View 并从 View 选择器中选择“累积传入引用”。

enter image description here

答案是,大约三分之一的 char[] 对象属于由各种类在 JVM 中分配的字符串,三分之二来自线程名称。

关于java - 分析程序时出现大量 char[] 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17808991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com