java - JVM后台运行什么

标签 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);
    }
}

最佳答案

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

https://visualvm.java.net/

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

关于java - JVM后台运行什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29288241/

相关文章:

c# - 如何从后台工作线程更改 XAML 元素?

java - JVM 最大堆大小可以是动态的吗?

java - 如何将char数组转换回字符串?

java - 如何覆盖语言

java - 处理 java.lang.Number 子类操作的通用泛型方法

java - Java 同步方法入口点线程是否足够安全?

c# - 使用 Azure WebJobs 调用静态方法

jvm - 无法安装SPECjvm2008

eclipse : Using same output folder for different projects

java - 如何在Java中为 "image/*"的String.matches()创建有效的正则表达式?