1

我已经获得了 jvisualvm 为使用 JNI 实现的本机共享库生成的线程转储。它在一个应用程序中运行,该应用程序通过 Dot.Net 的 Parallel.For 从多个线程调用它。库的 java 部分有一个线程池,但它的大小是有限的,并且库的 native 部分本身不创建任何线程。

似乎正在发生的事情是,正在创建越来越多的线程,最终应用程序因内存不足错误而崩溃。奇怪的是,应用程序基本上唯一要做的就是在循环中调用 Parallel.For 中的库,并且由它创建的任何线程都不应该“泄漏”(对吗?)。

线程转储包含许多形式的条目:

"Thread-139" prio=6 tid=0x0ba33c00 nid=0x22ac runnable [0x00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

这到底是什么意思呢?

4

0 回答 0