【发布时间】:2014-08-30 15:25:39
【问题描述】:
我有时在某处读到我们应该每个内核有一个 JVM。我还读到 Java 不适合多核或 CPU,因此首选 scala。
最近on a link 我读到如果可用的话,多个线程确实在不同的内核中执行。
问题:
- JVM 是否考虑多个内核/CPU 并在可用的情况下在单独的内核中执行每个线程?
- 使用 scala 来更好地使用内核与仅在单独的内核中执行有些不同?
- 如果 JVM 在单独的内核(如果可用)中执行每个线程,那么每个内核一个 JVM 的含义是什么,只有一个 JVM,我可以利用所有内核。
- 如果对 1 的回答是肯定的,那么在同一台机器上运行的多个服务器实例中部署 war/ear 有什么用。
【问题讨论】:
-
我不太明白.. JVM 转发对本机OS的所有调用。多核/单核直接对它有什么影响?
-
@TheLostMind - 这很重要。在 Python 中,GIL 防止同时使用多个内核,即使它可以在给定时间在任何单个内核上执行,所以这个问题是相关的。
-
您能否提供(并注明日期)“每个核心一个 JVM”的断言?自 JDK 1.5 以来,我一直在没有任何特殊干预的情况下在多个内核上执行多个线程......(在那之前多核机器并不那么普遍)
标签: java multithreading jvm