首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
在swoole 中, 使用地址引用自身,造成内存增加
### 问题描述 在swoole 中, 使用地址引用自身,造成内存增加 memory use:14.671089172363M memory use:14.671783447266M memory use:14.672477722168M memory use:14.67317199707M memory use:14.673866271973M ### Swoole版本,PHP版本,以及操作系统版本信息 ``` PHP 7.4.29 (cli) (built: Apr 14 2022 11:48:33) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.29, Copyright (c), by Zend Technologies swoole Swoole => enabled Author => Swoole Team <team@swoole.com> Version => 4.8.7 Built => Mar 4 2022 15:27:43 coroutine => enabled with boost asm context kqueue => enabled rwlock => enabled openssl => OpenSSL 1.1.1m 14 Dec 2021 dtls => enabled http2 => enabled pcre => enabled zlib => 1.2.11 brotli => E16777225/D16777225 async_redis => enabled Directive => Local Value => Master Value swoole.enable_coroutine => On => On swoole.enable_library => On => On swoole.enable_preemptive_scheduler => Off => Off swoole.display_errors => On => On swoole.use_shortname => On => On swoole.unixsock_buffer_size => 262144 => 262144 ``` ### 相关代码 ```php $callback = function() use (&$callback) {}; ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 解决办法可以先定义方法,再直接调用,不使用use,但是问题是第三方包,可能包里有很多很多这种,修改代码的方式肯定是不现实的,不知道有没有别的办法检测到内存占用或者释放方法 其实最根本的问题就是php的生态composer大部分都是fastcgi的包,不太适用于swoole,一个是不想重新造轮子,二个是希望直接使用,但还可以有办法处理内存泄漏问题
发布于2年前 · 56 次浏览 · 来自
提问
leiyu
### 问题描述 在swoole 中, 使用地址引用自身,造成内存增加 memory use:14.671089172363M memory use:14.671783447266M memory use:14.672477722168M memory use:14.67317199707M memory use:14.673866271973M ### Swoole版本,PHP版本,以及操作系统版本信息 ``` PHP 7.4.29 (cli) (built: Apr 14 2022 11:48:33) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.29, Copyright (c), by Zend Technologies swoole Swoole => enabled Author => Swoole Team <team@swoole.com> Version => 4.8.7 Built => Mar 4 2022 15:27:43 coroutine => enabled with boost asm context kqueue => enabled rwlock => enabled openssl => OpenSSL 1.1.1m 14 Dec 2021 dtls => enabled http2 => enabled pcre => enabled zlib => 1.2.11 brotli => E16777225/D16777225 async_redis => enabled Directive => Local Value => Master Value swoole.enable_coroutine => On => On swoole.enable_library => On => On swoole.enable_preemptive_scheduler => Off => Off swoole.display_errors => On => On swoole.use_shortname => On => On swoole.unixsock_buffer_size => 262144 => 262144 ``` ### 相关代码 ```php $callback = function() use (&$callback) {}; ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 解决办法可以先定义方法,再直接调用,不使用use,但是问题是第三方包,可能包里有很多很多这种,修改代码的方式肯定是不现实的,不知道有没有别的办法检测到内存占用或者释放方法 其实最根本的问题就是php的生态composer大部分都是fastcgi的包,不太适用于swoole,一个是不想重新造轮子,二个是希望直接使用,但还可以有办法处理内存泄漏问题
赞
0
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
2022-07-18
Rango
循环引用可能会引起内存泄露,可以在适当位置执行`gc_collect_cycles()`函数,去尝试强制回收。
赞
1
回复
2023-07-01
777666
回复
Rango
回复:Rango 适当的位置是是什么位置,可以给个demo学习一下吗
赞
0
回复
2023-06-01
kaycn
有没有具体的代码分享一下
赞
0
回复
微信公众号
热门内容
暂无回复的问答
- CodeGalaxy K3s 轻量集群节点之间如何实现负载均衡
- 关于openssl CURL WARNING swSSL_connect: SSL_connect(fd=69) failed. Error: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small[1|394]
- 多个模型如何进行事务异常回退?
- websocket开启wss报错
- 协程tcp服务器如何使用多进程?recv()方法接收信息,打印出来的pid一直是同一个。没用使用到多进程啊。