随着mysqld.exe和我的应用程序RAM大小增加

问题描述:

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 –

我的应用程序是用java编写的。因为这是我的应用程序运行非常缓慢

恐怕,它比Java更多。在Java中每秒运行数百次SQL查询绝对没有什么大不了的。

你错过的一件重要的事是a connection pool。另一个是prepared statement。相信我,还有很多东西需要学习。

这也是很有可能的,数据库是瓶颈。您的查询可能是问题,然后优化Java部分将无济于事。测量并更新您的问题。

+1

我在my.ini的mysql中添加了performance_schema = 0。这解决了我的问题。我也实施了连接池 –

+0

@ user_1992好的!请注意,准备好的语句对安全性也很重要(谷歌SQL注入)。 – maaartinus