현재 위치: > 최신 기사 목록> GC_MEM_CACHES 기능은 메모리 재활용 효율을 향상시키기 위해 GC_COLLECT_CYCLES 기능과 함께 사용됩니다.

GC_MEM_CACHES 기능은 메모리 재활용 효율을 향상시키기 위해 GC_COLLECT_CYCLES 기능과 함께 사용됩니다.

gitbox 2025-06-18

PHP의 쓰레기 수집 메커니즘에서 GC_MEM_CACHESGC_COLLECT_CYCLES 는 두 가지 매우 중요한 기능입니다. 그것들을 합리적으로 사용하면 메모리 재활용 효율을 크게 향상시키고 메모리 누출 위험을 줄이며 프로그램 성능을 최적화 할 수 있습니다. 이 기사는이 두 기능과 함께 메모리 관리를 구현하기위한 기능, 사용 방법 및 모범 사례를 자세히 소개합니다.


1. 쓰레기 재활용의 기초

PHP에서 GC (Garbage Collection)는 더 이상 메모리 누출을 방지하기 위해 더 이상 참조되지 않는 변수 및 객체를 자동으로 재활용 할 책임이 있습니다. PHP는 기준 계수 메커니즘을 통해 변수를 추적하지만 원형 참조 (둘 이상의 객체가 서로 참조)의 경우 간단한 참조 계산을 재활용 할 수 없으며 쓰레기 수집 메커니즘이 필요합니다.


2. GC_COLLECT_CYCLES 기능

GC_COLLECT_CYCLES () 는 쓰레기 수집을 적극적으로 트리거하는 PHP에서 제공하는 함수입니다. 원형 참조로 생성 된 모든 쓰레기를 스캔하고 재활용합니다.

효과:

  • 모든 원형 참조 메모리를 재활용하려고 시도하면서 전체 쓰레기 수집주기를 수행하십시오.

  • 재활용 된 루프 수를 반환합니다.

샘플 코드 :

 <?php
// 원형 참조 예제를 만듭니다
class A {
    public $b;
}
class B {
    public $a;
}

$a = new A();
$b = new B();
$a->b = $b;
$b->a = $a;

// 적극적으로 쓰레기 수거를 트리거합니다
$collected = gc_collect_cycles();
echo "재활용 $collected 참조 된 메모리\n";
?>

3. GC_MEM_CACHES 기능

GC_MEM_CACHES () 함수는 쓰레기 수집 내부의 캐시를 정리하고 메모리를 확보하는 데 사용됩니다. 이 캐시는 일반적으로 쓰레기 수집 중에 생성 된 임시 데이터 구조입니다.

효과:

  • 쓰레기 수집기의 내부 캐시를 정리하고 추가 메모리를 제거하십시오.

  • 재활용 참조는 적극적으로 재활용되지 않으며 캐시 된 데이터 만 해제됩니다.

샘플 코드 :

 <?php
// 정리 GC 은닉처,무료 메모리
gc_mem_caches();
echo "已정리垃圾回收은닉처\n";
?>

4. 공동 사용의 장점

PHP 스크립트 실행에서 GC_COLLECT_CYCLES ()를 호출하면 원형 참조 메모리를 재활용 할 수 있지만 쓰레기 수집 캐시는 여전히 존재하며 추가 메모리를 차지합니다. 현재 GC_MEM_CACHES ()가 즉시 호출되면 이러한 캐시를 해제하여 메모리 사용을 추가로 줄일 수 있습니다.

권장 사용 :

 <?php
// 쓰레기 수집을 방아받습니다
$collected = gc_collect_cycles();
echo "재활용 $collected 재활용 참조\n";

// 정리 GC 은닉처,추가 메모리를 자유롭게하십시오
gc_mem_caches();
echo "垃圾回收은닉처已정리\n";
?>

5. 실제 시나리오와 결합

예를 들어, 장기적으로 실행되는 PHP 스크립트 (예 : 데몬, CLI 스크립트 및 작업 대기열 작업자)는 메모리 사용량이 높으며 원형 참조가 발생하기 쉽습니다. 이 두 기능을 정기적으로 그리고 적극적으로 호출하는 것이 좋습니다.

예:

 <?php
while (true) {
    // 비즈니스 로직 시뮬레이션
    do_something();

    // 定期进行垃圾回收和은닉처정리
    $collected = gc_collect_cycles();
    gc_mem_caches();

    echo "재활용 $collected 재활용 참조,은닉처已정리\n";

    // 잠,과도한 사용을 방지하십시오 CPU
    sleep(10);
}
?>

6. 요약

  • GC_COLLECT_CYCLES ()는 참조 된 메모리를 재활용하는 데 사용됩니다.

  • GC_MEM_CACHES ()는 쓰레기 수집기의 내부 캐시를 정리하는 데 사용됩니다.

  • 조합으로 사용하면 메모리를보다 효과적으로 자유롭게 자유롭게하고 메모리 누출과 부풀게 될 수 있습니다.

  • 장기 실행 스크립트 에서이 두 기능을 합리적으로 부르는 것은 메모리를 안정적으로 유지하는 데 도움이됩니다.

이 두 기능을 사용하고 올바르게 사용하면 PHP 프로그램의 메모리 복구 효율을 크게 향상시키고 응용 프로그램 성능 및 안정성을 보장 할 수 있습니다.


PHP 쓰레기 수집 메커니즘에 대해 더 알고 싶다면 다음을 방문 할 수 있습니다.

https://gitbox.net/manual/en/function.gc-collect-cycles.php
https://gitbox.net/manual/en/function.gc-mem-caches.php