jvm - 当前的 HotSpot JVM 默认是并行运行的吗?

标签 jvm java jvm-hotspot

我正在使用这个 Java 版本:

java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.3) (suse-9.1-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)

当我启动一个 java 程序时,例如

java TestApp

默认情况下,JVM 会并行运行吗?

如果是,哪些部分并行运行?

我对此很感兴趣,因为我发现如果我使用taskset -c 0 java TestApp 来绑定(bind)运行在处理器0上的TestApp,第一次运行时间比 java TestApp 慢很多。这是否暗示着什么?

最佳答案

有许多单线程任务有自己的线程。

  • 运行你程序的主线程
  • 本地编译器的后台字节码
  • 终结器线程(在对象上调用 finalize())
  • GC线程池

您的代码将只使用与您创建的线程一样多的线程(加上为您创建的“main”)

关于jvm - 当前的 HotSpot JVM 默认是并行运行的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12219424/

相关文章:

java - 从堆转储中提取线程转储

java - 为什么在 jUnit 测试中非守护线程会终止?

java - Jvm 需要很长时间才能解析 localhost 的 ip-address

java - JVM上的内存分配是无锁的吗

java - 为什么 SetByteArrayRegion 不会损坏内存?

java - 自动异常处理

java - 从 String Android 创建 Json 对象

java - 在批处理文件运行时显示不确定的 JProgressBar

java - 通过 https 使用 Axis1

java - 如何用 Java 编写正确的微基准测试?