2016-09-07 10 views
0

私のアプリケーションはJavaで書かれています。私はデータベース用にMySQLサーバを使用しています。私は、mysqld.exeがJavaでより多くのメモリスペースを必要とすることを発見しました。しかし、それは徐々にメモリの低下なしに増加しています。すべての私の接続、preparedstatementとresultsetは、使用後に閉じられます。なぜそれは多くのメモリを必要とするのですか?パフォーマンスを低下させずにmysqld.exeのメモリ使用量を減らす方法は?MysqlはRAM容量を増やし、徐々にドロップダウンなしで増加します

+0

私はあなたがデータベースにアクセスするコードを置くべきだと思います。 –

+0

「mysqld.exeがJavaでより多くのメモリ容量を占めることがわかりました」平均? MysqldはJavaから独立してメモリを使用します。サーバーオプションを調整する必要があります(例: performance_schemaを無効にするか、バッファ、キャッシュなどのメモリサイズを減らしてください。しかし、メモリが少ないほど一般的にクエリは遅くなります。一時テーブルを使用していない場合を除いて、javaから行うことはほとんどありません。したがって、mysqlはそのメモリを割り当てる必要はありません。いったん使用すると、mysqldはあなたがそれを再起動しないかぎり、メモリを戻しません(そのアプリケーションのためだけにサーバを使用し、許可を持っている場合、オプションかもしれません)。 – Solarflare

答えて

0

MySQLとJavaはそれぞれ大きなサイズのRAMを使用します。

MySQLのメインメモリ用途は

  • のInnoDBのキャッシュです。サイズはinnodb_buffer_pool_sizeで制御されます。通常は、の約70%に設定する必要があります。 RAM。つまり、Javaのためのスペースを許した後です。 buffer_poolはその限界に達するまで増加し、MySQLのメモリのこの部分は成長を停止します。
  • 接続ごとのもの。これはかなりの設定で制御されます。注目すべき主なものは、my.cnfの多くの設定をランダムに増加させないことです。特に、max_connectionsをあまり上げないでください。 (現在のデフォルトは151で、ほとんどのユーザにとってはおそらく高すぎます)。接続ごとのものは出たり来たりします。通常はメガバイトで、ギガバイトではありません。

あなたは、更なる議論は、Javaのヒープの割り当てが何であるかを、持っている、とSHOW VARIABLES;SHOW GLOBAL STATUS;どのくらいのRAMを提供する必要がある場合。

関連する問題