首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分析程序时出现大量char[]实例

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

Stack Overflow用户
提问于 2013-07-23 19:31:44
回答 1查看 945关注 0票数 3

我分析了一个简单的程序,如下所示,并发现要创建大量的char[]实例。在这里读到char[]实例通常被归因于字符串之后,我不明白为什么这个程序是这样的。我知道Thread类中有一个char[] 'name‘变量,但这肯定只能创建10,000个这样的变量,所以我想知道额外的35,000个线程是从哪里来的?

代码语言:javascript
运行
复制
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个

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-24 16:01:46

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17808991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档