ejecución vs. llamar punto de unión

Tengo dos clases de aspectos diferentes para contar el número de llamadas a métodos no estáticos para una ejecución de un programa de prueba. El primer aspecto cuenta con los métodos de "llamada" puntos de unión:

pointcut methodCalls() : call (!static * test..*(..));
before(): methodCalls() {
        counter.methodCallCounter();
}

mientras que el segundo aspecto cuenta métodos en puntos de unión de "ejecución":

pointcut methodCalls() : execution (!static * test..*(..));
before(): methodCalls() {
        counter.methodCallCounter();
}

methodCallCounter () es un método estático en la clase de contador.

El número de llamadas a métodos para programas de prueba pequeños es el mismo. Pero cuando cambio el programa de prueba con un programa más grande, el número de llamadas de método en la segunda clase de aspecto (con corte de punto de ejecución) es mayor que el número de llamadas de método en la clase de aspecto con corte de punto de llamada. Esto es razonable ya que el punto de unión de llamada no selecciona las llamadas realizadas con super y, por lo tanto, no las cuenta.

Sin embargo, encontré un caso en el que, para la ejecución específica del programa, el número de llamadas de método no estáticas en la clase de aspecto con "corte de punto de llamada" fue mayor que el número de llamadas de método en la clase de aspecto con "corte de punto de ejecución". No puedo encontrar ninguna interpretación de por qué esto está sucediendo. Cualquier pensamiento sobre la razón de la segunda situación es apreciado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta