Java: W jaki sposób JVM zoptymalizuje wywołanie do pustej i pustej funkcji?

Wyobraźmy sobie, że mamy następujące klasy:

public class Message extends Object {}

public class Logger implements ILogger {
 public void log(Message m) {/*empty*/}
}

i następujący program:

public static void main(String args[]) {
  ILogger l = new Logger();
  l.log((Message)null); // a)
  l.log(new Message()); // b)
}

Czy kompilator Java usunie instrukcjea ib ? W obu przypadkach (stripping lub nie stripping), jakie jest uzasadnienie decyzji kompilatora Java?

questionAnswers(6)

yourAnswerToTheQuestion