With generics, yes, like C++ templates: each combination of parameters results in one instance.
However, you can opt into using trait objects instead, which do use virtual calls.
However, you can opt into using trait objects instead, which do use virtual calls.
I believe pcwalton's points are that 1) running in a virtual machine does not imply that a language is slow (though I bet he'd agree with you that JIT introduces substantial memory overhead), and 2) Java, specifically, is not slow, thanks to a highly-tuned JIT.