Independentemente do que seja o algoritmo de invalidação de cache, provavelmente haverá alguma quantidade de espaço livre, ou pelo menos é esperado que o espaço seja liberado sempre que a rotina de invalidação for executada. Então você deve esperar que haja algum espaço claro quase o tempo todo.
Para ser honesto, estou tendo alguma dificuldade em entender exatamente o que você está vendo e o que está perguntando. Você pode obter mais ajuda se reformular sua pergunta e adicionar detalhes. Se as quantidades específicas de memória a que você se refere são importantes para responder à sua pergunta, você deve fornecer um pouco mais de contexto sobre quanto espaço de memória compartilhada alocou no total e talvez sobre como o espaço livre varia com o tempo.
25MB de espaço livre parece muito pequeno para mim.
Acho que o algoritmo é que, quando o cache está cheio, a APC faz uma passagem completa pelo conteúdo do cache, identificando todo o conteúdo expirado. Não tenho certeza do que acontece se nada estiver expirado. Presumivelmente, o Cache_full_count é uma contagem de quantos desses passes ocorreram. Parece um palpite razoável de qualquer maneira. Se você quiser melhor do que adivinhação, e não está na documentação da APC, talvez seja melhor dar uma olhada no código-fonte. Muitas vezes é a maneira mais fácil de responder a essas perguntas, e você aprenderá muito adotando essa abordagem.