��������(Collecting Cycles)

��ͳ�ϣ�����ǰ�� php �õ������ü����ڴ���ƣ��޷�����ѭ���������ڴ�й©��Ȼ�� 5.3.0 PHP ʹ������» ���ü���ϵͳ�е�ͬ�����ڻ���(Concurrent Cycle Collection in Reference Counted Systems)�е�ͬ���㷨������������ڴ�й©���⡣

���㷨����ȫ˵���е㳬���ⲿ�����ݵķ�Χ����ֻ�������л������֡����ȣ�������Ҫ����һЩ�����������һ�����ü������ӣ�����������ʹ�ã���Ȼ�Ͳ����������С�������ü������ٵ��㣬���ڱ��������������(free)������˵�����������ü������ٵ�����ֵʱ���Ż������������(garbage cycle)����Σ���һ�����������У�ͨ��������ü����Ƿ��1�����Ҽ����Щ�������������ô������㣬�������IJ�����������

���������㷨

Ϊ���ⲻ�ò�����������ü������ܼ��ٵ��������ڣ�����㷨�����п��ܸ�(possible roots ����zval��������),���ڸ�������(root buffer)��(����ɫ����ǣ���Ϊ��������)����������ͬʱȷ��ÿ�����ܵ�������(possible garbage root)�ڻ�������ֻ����һ�Ρ������ڸ�����������ʱ���ŶԻ������ڲ����в�ͬ�ı�������ִ���������ղ���������ͼ�IJ��� A��

�ڲ��� B �У�ģ��ɾ��ÿ����ɫ������ģ��ɾ��ʱ���ܽ�������ɫ����ͨ������������"1"�����ij����ͨ�������ü������0�ˣ��Ͷ������ͨ��������һ��ģ��ɾ����ÿ������ֻ�ܱ�ģ��ɾ��һ�Σ�ģ��ɾ������Ϊ�ң�ԭ��˵ȷ�������ͬһ����������������"1",���Եİɣ���

�ڲ��� C �У�ģ��ָ�ÿ����ɫ�������ָ����������ģ������������ü�������0ʱ�Ŷ�����ģ��ָ���ͬ��ÿ������ֻ�ָܻ�һ�Σ��ָ�����Ϊ�ڣ��������Dz��� B �������㡣����ʣ�µ�һ��û�ָܻ��ľ��Ǹ�ɾ������ɫ�ڵ��ˣ��ڲ��� D �б����������ɾ������

�㷨�ж���ģ��ɾ����ģ��ָ������ɾ������ʹ�ü򵥵ı������ɣ�����͵����ѱ����������Ӷ�Ϊִ��ģ������Ľڵ�������أ���ֻ����ɫ����Щ��������������

���ڣ����Ѿ�������㷨���˻����˽⣬���ǻ�ͷ������������PHP���ɡ�Ĭ�ϵģ�PHP���������ջ����Ǵ򿪵ģ�Ȼ���и� php.ini �����������޸�����zend.enable_gc ��

���������ջ��ƴ�ʱ��ÿ��������������ʱ���ͻ�ִ������������ѭ�������㷨�����������й̶��Ĵ�С���ɴ�10,000�����ܸ�,��Ȼ�����ͨ���޸�PHPԴ���ļ�Zend/zend_gc.c�еij���GC_ROOT_BUFFER_MAX_ENTRIES��Ȼ�����±���PHP�����޸����10,000ֵ�����������ջ��ƹر�ʱ��ѭ�������㷨����ִ�У�Ȼ�������ܸ���һֱ���ڸ��������У��������������������ջ����Ƿ񼤻

���������ջ��ƹر�ʱ������������������˿��ܸ�������Ŀ��ܸ���Ȼ���ᱻ��¼����Щû����¼�Ŀ��ܸ��������ᱻ����㷨�������������������ѭ���������ڵ�һ���֣��������ܱ�������������ڴ�й©��

��ʹ���������ջ��Ʋ�����ʱ�����ܸ�Ҳ����¼��ԭ���ǣ������ÿ���ҵ����ܸ������������ջ����Ƿ�򿪶��ԣ���¼���ܸ��IJ������졣�����������պͷ������Ʊ���Ҫ�IJ���ʱ�䡣

�����޸�����zend.enable_gc ��Ҳ��ͨ���ֱ����gc_enable() �� gc_disable()�������򿪺͹ر��������ջ��ơ�������Щ���������޸����������򿪻�ر��������ջ��Ƶ�Ч����һ���ġ���ʹ�ڿ��ܸ���������û��ʱ��Ҳ��ǿ��ִ�����ڻ��ա����ܵ���gc_collect_cycles()�����ﵽ���Ŀ�ġ��������������ʹ������㷨���յ���������

����򿪺͹ر��������ջ��Ʋ������������ij�ʼ����ԭ�����������Ӧ�ó����ij���ֿ����Ǹ�ʱЧ�Եġ�����������£�����ܲ���ʹ���������ջ��ơ���Ȼ�������Ӧ�ó����ij���ֹر��������ջ��ƣ�����ð�ſ����ڴ�й©�ķ��գ���ΪһЩ���ܸ�Ҳ��治�����޵ĸ�����������ˣ����������gc_disable()�����ͷ��ڴ�֮ǰ���ȵ���gc_collect_cycles()�������ܱȽ����ǡ���Ϊ�⽫����Ѵ���ڸ��������е����п��ܸ���Ȼ�����������ջ��Ʊ��ر�ʱ�������¿ջ��������и���ռ�洢���ܸ���