特定のスレッドが消費する RAM の量を調べる方法を知りたいです。私のプログラムには約15のクラスがあり、それぞれが独自のスレッドで実行されています。
では、Thread1、Thread2、... Thread15 で使用されている RAM の量を調べるにはどうすればよいでしょうか? これには何か方法はありますか?
返信ありがとうございます。
簡単に言えば、動的に割り当てられたすべてのメモリ (ヒープ) は、Java のThreadLocal クラスを使用してスレッドに対してのみローカルな変数を宣言しない限り、すべてのスレッドによって共有されるということです。
実際、(ThreadLocal を使用しない場合に) スレッド間でデータを共有する従来の Java メモリ モデルは、スレッド間でのメモリ共有においてスレッド化を非常に強力なものにしています。
sk4l が述べたように、JVM がサポートしている場合はThreadMXBeanメソッドの getThreadAllocatedBytes メソッドがありますが、これは通常、おおよその値であることに注意してください。
最後に、Oracle JDK と OpenJDK の最新バージョンにはjconsoleが含まれており、JDK 6u7 以降にはVisualVMが含まれており、どちらを使用してプロセスにアタッチし、メモリとスレッドに関する情報を確認できます。