私はスレッドプールサイズがCPUコアの数に結びついている理由を理解していますが、ForkJoinThread
の設計者はデフォルトで# of cpu cores - 1
スレッドを使用するのはなぜですか?なぜ-1
?共通のForkJoinPoolがすべてのコアを使用しようとしないのはなぜですか?
私が構築していた場合、私自身ForkJoinPool
(共通インスタンスを使用していない)、およびmain
スレッドは、それはいくつかの結果を返すのを待って、プールでブロックされている、私はRuntime.getRuntime().availableProcessors()
スレッドよりも少ない割り当てしたい何らかの理由があるのでしょうか?
更新日:ダウン投票の理由を説明してください。それ以外の場合、私は質問を改善することはできません。
JVMは通常、ガベージコレクションを行うためにいくつかのコアを予約します。これは実行中のアーキテクチャとどのGC実装が選択されているかによって大きく異なります。 https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/toc.html –
@AndrewRueckertコメントでダウンボートする代わりに、これを回答として投稿してください。これは合理的な説明です。 – Gili
私はあなたにdownvoteをしませんでしたが、私は私の答えが "Answer"の資格を得るのに充分だとは思わなかった。とにかく、私は間違っていました。 :/ –