[英]Memory leaks in Java: database connection in multiple methods
我構建了一個爬蟲,該爬蟲當前正以每天600MB的速度遇到內存泄漏。 我認為原因是數據庫連接。 當前,我正在創建一個數據庫連接作為靜態方法,如下所示:
static
{
try
{
String hostname = PropertyReader.getProperty("hostname");
String port = PropertyReader.getProperty("port");
String dbname = PropertyReader.getProperty("dbname");
String username = PropertyReader.getProperty("username");
String password = PropertyReader.getProperty("password");
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://"+hostname+":"+port+"/"+dbname+"";
conn = DriverManager.getConnection(url, username, password);
System.out.println("conn built");
}
catch (SQLException e)
{
e.printStackTrace();
} catch (ClassNotFoundException e)
{
e.printStackTrace();
}
}
並且我在多種方法中使用此變量,如下所示:
public static void getSeed()
public static void processPage(String URL)
用於檢索數據並將數據插入數據庫。
避免內存泄漏的最佳替代方法是什么?
內存泄漏的最大根源是忘記關閉ResultSets和PreparedStatements。 無法確定您是否正在代碼的其他地方執行此操作,但是如果您這樣做,那就是我的出發點。
這是我的想法:
不同的線程不應共享單個連接。 這將導致悲傷。 設置一個連接池,然后配置文件。 您可能會對泄漏出現的地方感到驚訝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.