gpt4 book ai didi

java - C3P0 创建过多的线程和定时器

转载 作者:搜寻专家 更新时间:2023-11-01 03:56:55 24 4
gpt4 key购买 nike

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

问题是,在使用 Java VisualVM 查看我的 webapp 时,我发现有很多 Timers 和 com.mchange.v2.async.ThreadPoolAsynchronousRunner 类,并且随着时间的推移而增长。对于每个计时器,都会创建 3 个线程。

所有的线程和定时器都处于 WAIT 状态,我认为这个问题可能是应用程序发生 OutOfMemory 错误(Java 堆空间)的原因。产生。即使我在 MySQL Administrator 中看到当 servlet 结束任务时所有连接都已关闭,但一些对象可能仍在内存中。

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

谢谢

以斯奎尔

最佳答案

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

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

关于java - C3P0 创建过多的线程和定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6651263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com