2016-08-16 61 views
-3
In my Task Manager i found that Mysqld.exe takes till 130kb of RAM size and once it reaches this size my application size(javaw.exe) in RAM is gradually increasing which causes the system to hang. Why this takes place? Anyone Please Help. My application is written in java. becaus of this my application is running very slowly 

這是我如何進行連接。這個線程將每秒調用一次隨着mysqld.exe和我的應用程序RAM大小增加

thread_sample_s1 = new Thread(new Runnable() { 
     public void run() { 
      try { 
       ResultSet ress1 = null; 
       Statement state_men = null; 
       Connection conn_sample_s1 = null; 
       try { 
        conn_sample_s1= (Connection)DriverManager.getConnection(url_s1+db_s1,user_s1,pwd_s1); 
       } catch (SQLException e3) { 
        // TODO Auto-generated catch block e3.printStackTrace(); 
       } 
      conn_sample_s1.setAutoCommit(false); 
      state_men = conn_sample_s1.createStatement(); 
      //--->> Queries 
      state_men.close(); 
      ress1.close(); 
      conn_sample_s1.commit(); 
      conn_sample_s1.close(); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
} }); thread_sample_s1.start(); 

有超過100個線程與此類似。這將開始新的每一秒

+0

除非你發佈了一些示例代碼,說明你如何使用你的數據庫連接,否則沒有人可以隨機猜測,這是浪費時間。 – MarsAtomic

+0

你有多少內存?你有沒有改變my.cnf中的任何默認值? Java的內存有什麼限制? –

+0

2Gb RAM和512mb限制jvm –

回答

0

我的應用程序是用java編寫的。因爲這是我的應用程序運行非常緩慢

恐怕,它比Java更多。在Java中每秒運行數百次SQL查詢絕對沒有什麼大不了的。

你錯過的一件重要的事是a connection pool。另一個是prepared statement。相信我,還有很多東西需要學習。

這也是很有可能的,數據庫是瓶頸。您的查詢可能是問題,然後優化Java部分將無濟於事。測量並更新您的問題。

+1

我在my.ini的mysql中添加了performance_schema = 0。這解決了我的問題。我也實施了連接池 –

+0

@ user_1992好的!請注意,準備好的語句對安全性也很重要(谷歌SQL注入)。 – maaartinus

相關問題