Да, у этого вызова есть некоторые издержки, но, по всей вероятности, вы собираетесь сделать что-то вроде этого:
public static boolean DEBUG_ON = true; //change this before your production build
тогда
public void debug(String message){
if(DEBUG_ON){
//stack code here
}
}
Что заставит вас не попадать в ваш реальный код.
Даже тогда, за исключениями, вы будете выдавать исключение из целого стека в своей производственной сборке.
Обратите внимание, что если вы используете приличную подсистему ведения журнала, они, вероятно, уже что-то сделают на основе уровня ведения журнала (в нашей системе ведения журнала, в зависимости от уровня, debug () в основном не работает). Log4j и другие по-разному справляются с этим.
Наконец, я бы сказал: не беспокойтесь об этом, пока это не станет реальной проблемой производительности. Преждевременная оптимизация - корень всего зла:)