2

我已经在我的 HTC One X(QuadCore 实际上是 PentaCore)上的 chroot 环境中安装了 Ubuntu 12.04(v2 完整版):http ://linuxonandroid.blogspot.de/p/downloads.html

当我在 Ubuntu 上启动一个简单的 Java 终端应用程序并使用打印出处理器计数时,Runtime.getRuntime().availableProcessors()我注意到我得到的结果不一致。它返回 1 到 4 个内核之间的任意位置,而不是总是看到全部 4 个。

我知道原生 Android 内核按需使用 4 个内核,但是当我htop在 Ubuntu 上运行进程查看器时,我总是看到 4 个 CPU!为什么 Ubuntu 的 JVM 报告不同数量的内核,而htopUbuntu 内核可以一致地看到所有 4 个内核?

4

1 回答 1

1

据我所知,这就是 JVM 的工作方式。注释文档availableProcessors()(强调我的):

public int availableProcessors()

返回 Java 虚拟机可用的处理器数量。

此值可能会在虚拟机的特定调用期间发生变化。因此,对可用处理器数量敏感的应用程序应偶尔轮询此属性并适当调整其资源使用情况。

我的假设是,波动发生在操作系统根据当前运行的进程数量及其在系统上的负载确定它需要如何分配内核时。尽管它可能并不总是为 JVM 提供所有四个内核,但听起来 Ubuntu 和 Android 都在正常工作。我认为这实际上与 Ubuntu 在 Android 环境中运行这一事实无关。

于 2012-06-07T17:28:24.927 回答