1

我正在使用这个 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绑定TestApp运行在 上processor 0,第一次运行时间比java TestApp. 这是否意味着什么?

4

3 回答 3

2

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

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

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

于 2012-08-31T19:32:47.070 回答
1

JVM 有本机线程,没有全局锁,如果这就是你要问的。

于 2012-08-31T16:45:51.670 回答
0

第一次运行时间可能主要是将字节码 JITing 为机器码。我强烈怀疑该过程针对并行场景进行了优化。

于 2012-08-31T16:48:24.233 回答