JVM最新在后台运行

时间:2015-03-26 20:30:12

标签: java multithreading jvm

我有一些代码。 它是不是多线程的,但是当我运行它时 我可以看到我的所有4个处理器都运行在80%而不是15%。

有人可以解释非多线程程序如何在所有处理器上运行。 我找到了一些答案,说它是一个垃圾收集器。

还有更多的东西在背景上运行吗?

你可以试试这段代码(我知道这不是最好的写法):

String ans = "";
for (int i = 0; i < 1000000; i++) {
    String s = "aba";
    ans += s;
    if(i % 1000 == 0)
        System.out.println(i);
    }
}

2 个答案:

答案 0 :(得分:2)

似乎GC和其他内务管理确实会导致此行为(通过连接实例化大量字符串对象)。为了绝对确定发生了什么,我建议你查看VisualVM工具。

https://visualvm.java.net/

它将显示所有正在运行的线程的列表,并通知您GC活动。

答案 1 :(得分:0)

ans += s;创建一个新字符串并将其分配回ans,因此它可能是垃圾收集器。