JNI を使用して実装されたネイティブ共有ライブラリの jvisualvm によって生成されたスレッド ダンプが提供されました。Dot.Net の Parallel.For を介して複数のスレッドから呼び出しているアプリで実行されています。ライブラリの Java 部分にはスレッド プールがありますが、そのサイズには制限があり、ライブラリのネイティブ部分自体はスレッドを作成しません。
発生しているように見えるのは、ますます多くのスレッドが作成され、最終的にアプリがメモリ不足エラーでクラッシュすることです。奇妙なことに、基本的にアプリが行っていることは、Parallel.For 内のループ内でライブラリを呼び出すことだけであり、それによって作成されたスレッドは「リーク」してはなりません (そうですか?)。
スレッド ダンプには、次の形式のエントリが多数含まれています。
"Thread-139" prio=6 tid=0x0ba33c00 nid=0x22ac runnable [0x00000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
それは正確にはどういう意味ですか?