web-dev-qa-db-ja.com

Runtime.getRuntime()。availableProcessors()

プログラムのパフォーマンスをチェックしようとしています。この投稿を参照します OSレベルのシステム情報を取得しますRuntime.availableProcessors()を実行すると、4の答えが返されます。 availableProcessors() と読みましたが、このメソッドがプロセッサの数を返すことがわかります

  1. プロセッサの数の意味を誰かが説明できますか?
  2. 結果として4が得られるのはなぜですか?

私はWindows7コアi54gpを使用しています。

16
Amith

プロセッサの数は、基本的にコードを実行できる実行エンジンの数です。 i5のバリエーションの1つは、4コアCPUであるi5-7シリーズです。これらは、物理的に異なるプロセッサ(同じチップ内に存在する場合でも)である場合もあれば、ハイパースレッディングを使用している場合は論理プロセッサである場合もあります。

詳細については、 http://en.wikipedia.org/wiki/Intel_Core#Core_i5 および http://en.wikipedia.org/wiki/Hyper-threading を参照してください。

17
paxdiablo

読んだように、availableProcessors()number of processors available to the JVMを返すメソッドです。 4は、JVMで現在使用可能なプロセッサの数を意味します。

これらの行は、Windowsおよびその他のオペレーティングシステムではnumber of logical coresを返します。

クアッドコアCore i7サポートハイパースレッディングのコンピューターでは、8が返されます。

クアッドコアQ67のコンピューターでは、このメソッドは4を返します。

23
AlphaMale

マルチコアプロセッサ (あなたの場合は Lynnfield のように見えます)があります。各コアは他のコアと同時に命令を実行できるため、各コアは情報の目的で個別のCPU(個別のプロセッサ)としてカウントされます。

3
mikołak

Jvmプロセスで使用できるコアはありません。ハイパースレッディングが有効になっている場合は、実際よりも大きくなる可能性があります。

このコンテキストでは、「プロセッサ」は「独立して実行できるハードウェア」、つまりcpu coreです。

これは「プロセッサパッケージ」ではありません。購入する単一のハードウェアユニットです(実際には、1つのパッケージに4つの独立したCPUが含まれています)。

0
Bohemian