The "holes" are where the current instruction's arguments go, see the Java Virtual Machine Specification. It contains a full list of bytecodes in Chapter 6.
For example invokevirtual
and invokespecial
both take 2 arguments, so the next opcode will be found 3 bytes later. In both these cases the parameters (indexbyte1 and indexbyte2) are needed to calculate the position in the constant pool as (indexbyte1 << 8) | indexbyte2)
Javap looks up these values for you, that's the reference in comments after the actual instruction.