2016-09-07 74 views
0

我的应用程序是用Java编写的。我使用数据库的MySQL服务器。我发现mysqld.exe在Java中占用更多的内存空间。但是,它正在逐渐增加,没有任何内存下降。我的所有连接,预备陈述和结果集在使用后都会关闭。为什么它需要大量的内存?如何在不降低性能的情况下减少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控制,通常应该设置为可用的RAM的大约70%。也就是在允许Java空间之后。 buffer_pool会增长,直到达到这个限制,那么这部分MySQL的内存将停止增长。
  • 每个连接的东西。这是由很多设置控制的。主要的注意事项是不要随机增加my.cnf中的许多设置。尤其不要多提起max_connections。 (目前的默认值是151,这对大多数用户来说可能太高)。每个连接的东西会来去去;但通常是兆字节,而不是千兆字节。

如果您需要进一步讨论,为您提供多少RAM,什么样的Java堆分配是,和SHOW VARIABLES;SHOW GLOBAL STATUS;