我已经获得了jvisualvm为使用JNI实现的本机共享库生成的线程转储。它正在一个应用程序中运行,该应用程序通过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
究竟是什么意思?