Here are some examples of this. I am not familiar with the Jikes implementation, but I read on both Java projects and PyPy. Most of them have a common division of things into two levels: the runtime / interpreter level and the application level. Each level has its own objects, exceptions, thread of execution, etc.
When you think of it abstractly, it is actually easier to understand. The runtime can be recorded using memory or not, at a low level or at a high level, necessarily or functionally. It does not really matter. The important thing is that this is the function that it does. Ultimately, it translates into machine code, and all machine codes are the same for the machine. This code accepts operation codes and data as input, predetermines actions based on them, manages resources, etc.
. , , . . runtime , , , . GC-, GC, GC... , ENIAC.;)
, , Jikes, ( ). , GC, GC. , . . . GC GC - : .
. GC GC-based runtime, . , , , , GC GC . GC , , . GC GC , GC, .
- . . .