有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java C3P0创建太多线程和计时器

我有一个在Tomcat上运行的Java Web应用程序,带有Hibernate和C3P0。所有实体类和JPA控制器都是用Netbeans wizzard完成的。有一个servlet,当被调用时,它会在数据库中插入许多对象(使用JPA控制器)

问题是,使用Java VisualVM查看我的webapp时,我发现有很多计时器和com。麦克亨格。v2。异步的。ThreadPoolAsynchronousRunner类,它会随着时间的推移而增长。对于每个计时器,创建3个线程

所有线程和计时器都处于等待状态,我认为这个问题可能是应用程序遇到的OutOfMemory错误(Java堆空间)背后的原因。生产。尽管我在MySQL管理员处看到,当servlet结束任务时,所有连接都关闭了,但可能有些对象仍在内存中

C3P0创建超过700个Timeras和2100个线程处于“等待”状态是否正常

谢谢

以西结


共 (1) 个答案

  1. # 1 楼答案

    由于您没有发布任何代码,我只能猜测,但听起来您正在创建很多池。 您应该确保在每次需要连接时都重用一个池,而不是创建一个池

    同样的事情曾经(偶然)发生在我身上。虽然我没有遇到OutOfMemory,但已达到数据库服务器上的最大连接限制