我的应用程序的用户患有OutOfMemoryError
s,这可能是由于线程太多造成的。应用程序代码经过仔细审查大多数后台任务使用不超过2个CPU核心号线程的线程池。一些模块具有专用线程供自己使用,但是许多这样的线程是固定的并且非常有限。但是,应用程序通常在运行时有130多个线程。在特定的崩溃报告中,我甚至看到在用户设备上运行了400多个线程。由于我在应用程序中使用了一些第三方库,我想调查他们的行为。大多数正在运行的线程都被命名为“pool-xx-thread-1”,这是Executors.DefaultThreadFactory
生成的默认名称。似乎某些库代码会创建大量的单线程池。
如何找到创建大量线程的代码?