Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PostgreSQL连接的内存使用在执行过程中不断增加_Java_Postgresql_Memory - Fatal编程技术网

Java PostgreSQL连接的内存使用在执行过程中不断增加

Java PostgreSQL连接的内存使用在执行过程中不断增加,java,postgresql,memory,Java,Postgresql,Memory,我有一个webcrawler thar使用连接池连接到数据库并插入页面 我看到程序执行时内存使用量在增加。我猜我忘了关闭某个PreparedStatement或另一个连接对象 我调用connection.close方法,但它只将connectin返回到数据库 有一种方法可以查看连接中是否有打开的对象?您似乎认为您的应用程序存在内存泄漏。要开始调试,可以使用JDK附带的工具jmap(通常位于java、javac、javadoc等旁边的bin目录)。此命令将生成JVM中所有对象的内存映射。您可以在应

我有一个webcrawler thar使用连接池连接到数据库并插入页面

我看到程序执行时内存使用量在增加。我猜我忘了关闭某个PreparedStatement或另一个连接对象

我调用connection.close方法,但它只将connectin返回到数据库


有一种方法可以查看连接中是否有打开的对象?

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

jmap-heap-histo
如果您确实没有正确关闭语句对象,您将很快看到它们冒泡到堆栈的顶部

所有“可关闭”的对象都应该在finally块中关闭,以避免在关闭前抛出异常时在JVM中留下打开的连接、语句等


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

您如何知道它使用了大量内存?这是从上面来的吗?是SHR吗?SHR随时间增长到与共享缓冲区大小相等是正常的,这不是问题。请出示您的内存使用证明
jmap -heap -histo <PROCESS_ID_OF_YOUR JVM>