### 问题描述
查询后内存不释放
运行前内存情况:
nobody 60849 0.0 0.0 606224 15944 ? S 17:47 0:00 server9501
nobody 60850 0.0 0.0 606160 16800 ? S 17:47 0:00 server9501
nobody 60851 0.5 0.1 655440 66096 ? S 17:47 0:00 server9501
nobody 60853 0.0 0.0 606224 15944 ? S 17:47 0:00 server9501
nobody 60854 0.0 0.0 606224 15944 ? S 17:47 0:00 server9501
运行后内存情况:
nobody 60849 0.3 0.1 657616 66116 ? S 17:47 0:00 server9501
nobody 60850 0.2 0.1 657616 66144 ? S 17:47 0:00 server9501
nobody 60851 0.3 0.1 657616 66116 ? S 17:47 0:00 server9501
nobody 60853 0.3 0.1 657616 66120 ? S 17:47 0:00 server9501
nobody 60854 0.4 0.1 657616 66116 ? S 17:47 0:00 server9501
### Swoole版本,PHP版本,以及操作系统版本信息
swoole 4.5.6
PHP Version 7.3.24
CentOS Linux release 7.1.1503 (Core)
### 相关代码
```php
class Mysqlpools3_class {
public function query($host, $user, $passwd, $db, $port){
try{
$mysql_class = new mysqli($host, $user, $passwd, $db, $port);
$mysql_class->query('SET NAMES "utf8"');//指定字符集
$data = $mysql_class->query('select content,msg_id from a1_msg_test2 where ymd = '.date('ymd').' limit 10000');//查询
$results = array();
while($row = $data->fetch_assoc()) {
$results[] = $row;
}
// mysql释放结果集,防止mysql数据库内存泄漏
try{
$data->free();
}
catch(Throwable $e){
}
try{
$data->free_result();
}
catch(Throwable $e){
}
try{
$data->close();
}
catch(Throwable $e){
}
//return $results;
}
catch(Throwable $e){
}
}
}
执行代码:
protected function test5(){
echo memory_get_usage()."
\n";
$Mysqlpools3_class = new Mysqlpools3_class;
$info = $Mysqlpools3_class->query('192.168.1.243','datauser','20162014datauserpassword2014', 'source_1', 3306);
print_r($info);
echo memory_get_usage()."
\n";
$this->system_die('ok');
}
```
### 你期待的结果是什么?实际看到的错误信息又是什么?
内存能释放出来占用降低,如果这个1万条记录运行内存涨到300M也是不会释放的,现在提供的案例记录文本内容是比较小的。