定时长任务,内存资源回收问题,望不吝赐教

0

用WORKERMAN做了一台推送/定时任务系统,推送功能基本是白天才会有流量,晚上的时候会跑一些大量数据的任务(数据统计什么的),请问用WM的定时器执行这些任务之后可以自动释放对象资源么?还是需要手动释放?释放的内存方便给白天的推送服务使用。@walker

已邀请:

walkor

赞同来自: hansliao blogdaren

workerman内存回收机制完全遵循php原有的GC机制。在workerman里业务代码都是在函数或者类方法里运行的,根据php的回收机制,函数或者类方法里临时变量会自动回收。所以开发时基本不用考虑内存回收问题,也不会有内存泄漏,不需要手动unset。
 
满足以下条件的变量需要注意:
1、global关键字的全局变量,并且变量是数组(不是数组不用关心)
2、static关键字的类的静态变量,并且变量是数组(不是数组不用关心)
3、给worker对象临时赋值的属性,比如 worker->uidlist,并且这个属性是数组(不是数组不用关心)
 
以上三种变量是数组的情况下需要注意,这些变量因为不属于临时变量,所以会一直存在于内存,注意不要让数组里面的数据无限增加,否则会导致内存泄漏。
 
另外定时器也需要注意,定时器也是用一个类的静态数组存储,如果无限增加定时器又从不删除,会导致内存泄漏。

hansliao

赞同来自:

夜间定时任务代码是已自定义类方法的方式在定时器中调用

要回复问题请先登录注册