kokonani

ただいま。
とりあえずキリのいいところまで
仕事をしようw

-----

そうそう。今日学んだこと。
MSDNドキュメントのCreateThreadより

「1つのプロセスが作成できるスレッドの数は、利用可能な仮想メモリによって
制限されます。既定では、各スレッドに 1MB のスタック空間が割り当てられて
います。そのため、最大 2,028 個のスレッドを作成できます。」

ほぅ。

「また、既定のスタックサイズを減らすことにより、さらに多くのスレッドを作
成することもできます」

ほぅほぅ。

ためしにjavaでひたすらthreadを作るだけのツール(shudoさん作)を
1スレッドあたりのスタックサイズをちょっと変えて実行してみる。

-----

#java -Xss1024k -cp classes ManyThreadsTest
→1771個。

まー、他のアプリも動いてたりVMも動いてたりするから
2028個には届きませんが…

#java -Xss64k -cp classes ManyThreadsTest
→24722個

ふむ。

#java -Xmx512m -Xss64k -cp classes ManyThreadsTest
→18188個

減ったw
スレッド用に使えるスタック領域が
ヒープ確保したせいで減ったっちゅうことかい?
blog comments powered by Disqus