【问题标题】:Java VM - Eclipse using my cores?Java VM - Eclipse 使用我的内核?
【发布时间】:2012-12-02 08:43:52
【问题描述】:

我对运行我的 Java 代码的 JVM 有疑问。我的朋友有一个 2.4 或 2.5GHz 双核,而我有一个 2GHz 四核。现在我的问题是:Java 是使用所有内核还是只使用一个内核?我的朋友认为 Java 使用 1 个内核,因此他的运行时间会更好,因为他的内核的时钟频率比我的高。

【问题讨论】:

  • Java 将使用尽可能多的内核来运行 JVM 应用程序运行的所有并发 Threads。
  • 如果您没有 GUI 并且不在应用程序中使用多线程,那么您的程序将只使用一个内核。

标签: java eclipse processor


【解决方案1】:

JVM 本身使用多个线程,这些线程很可能会使用多个内核(取决于 OS 调度程序的心情)。

您的程序使用的线程数与您要求的线程数一样多。如果您的代码是单线程的,它将是顺序的,并且不会从您的多核架构中受益(但是请注意,您的单线程可能会使用多个内核,但不能同时使用)。

【讨论】:

  • 我从来没有特意要求多线程,它只是一个会顺序运行的程序,所以它只使用1个核心?
  • @user1903753 在这种情况下,您的代码将只使用一个内核。但正如上面和其他人所提到的,JVM 仍将受益于拥有更多内核来运行垃圾收集等后台任务。
【解决方案2】:

如果操作系统在可用处理器上分配线程,Java 将从多核中受益。 JVM 本身并没有做任何特殊的事情来让它的线程在多个内核上均匀调度。

通常,Java 应用程序会尝试将每个活动线程调度到单独的内核上。这包括垃圾收集器线程。

看看以下链接:

  1. how-does-java-makes-use-of-multiple-cores

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    相关资源
    最近更新 更多