gpt4 book ai didi

java - PostgreSQL 连接的内存使用量在执行中不断增加

转载 作者:行者123 更新时间:2023-12-01 15:48:19 26 4
gpt4 key购买 nike

我有一个网络爬虫,它使用连接池连接到数据库并插入页面。

我发现程序执行时内存使用量不断增加。我想我忘记关闭某些PreparedStatement 或连接的另一个对象。

我调用了connection.close方法,但它只返回到数据库的连接。

有办法查看连接中是否有打开的对象吗?

最佳答案

您似乎表明您的应用程序存在内存泄漏。要开始调试,您可以使用 jmap,这是 JDK 附带的实用程序(通常位于 java、javac、javadoc 等旁边的 bin 目录中)。该命令将生成 JVM 中所有对象的内存映射。您可以在应用程序运行时随时间运行它,并比较对象计数,以查看是否有任何类型的对象似乎总计数不断增加,但没有减少(由于垃圾收集)。

jmap -heap -histo <PROCESS_ID_OF_YOUR JVM>

如果您确实没有正确关闭语句对象,您很快就会看到它们冒泡到堆栈顶部。

所有“可关闭”对象都应该在finally block 中关闭,以避免在关闭之前抛出异常,从而避免打开的连接、语句等在JVM中徘徊。

注意:在 Windows 上,这些可执行文件具有 .exe 后缀。

关于java - PostgreSQL 连接的内存使用量在执行中不断增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6673693/

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