Esistono due tipi di probe che è possibile utilizzare per controllare i metodi di destinazione.
Il primo tipo di probe viene inserito in un punto qualsiasi all'interno del corpo di un metodo. Dal momento che viene inserito nel metodo di destinazione, questo tipo di probe viene chiamato probe method. Per i probe method, i file di classe o jar che contengono i metodi vengono dotati di probe dal motore BCI (Byte-Code Instrumentation).
Il secondo tipo di probe viene inserito nel corpo di un qualsiasi metodo che richiama il metodo di destinazione. Dal momento che viene inserito al punto di chiamata, ossia nel metodo che esegue la chiamata e non in quello che viene richiamato, questo tipo di probe viene definito probe callsite. Per i probe callsite, i file di classe o jar che contengono i metodi che richiamano i metodi di destinazione vengono dotati di probe dal motore BCI.
Questo secondo tipo di probe viene spesso utilizzato quando si desidera controllare le chiamate eseguite dal proprio progetto a una libreria di sistema oppure ad altre classi di supporto esterne al progetto. I probe callsite sono utili anche nel caso in cui sia difficile o impossibile dotare di probe i file di classe che contengono i metodi che si desidera utilizzare come destinazione.
Frammenti method e callsite non possono coesistere in un singolo probe, ma un file .probe può contenere sia probe method e che probe callsite.
Argomento principale: Raccolta dati di runtime con probe definiti dall'utente