4 ms·
I think the biggest problem with embedded GC is that you generally don't want to do pay the memory overhead that comes with generational algorithms. It's a pity
by inoop 14y ago
I think the biggest problem with embedded GC is that you generally don't want to do pay the memory overhead that comes with generational algorithms. It's a pity that most Java systems are layered on top of some C-based OS, so that each process effectively has to have its own heap, with all the memory overprovisioning that entails.
- reirob 14y agoCan you tell what you meant by "most Java systems"? Which are the Java systems that are NOT running on top of some C-based OS?
- inoop 14y agoManaged operating systems such as JNode (Java based) or Singularity (.NET based) have managed kernels - everything is written in a memory-safe language. The OS can verify the memory-safety of a program in the loader (bytecode verification), so that there is no need for an MMU to implement process isolation; different processes can share the same heap. There is also a big performance advantage as process switching is essentially as fast as thread switching. IPC is typically done using message passing, but Singularity for example also allows processes to set up a shared memory space. edit: relevant paper: https://agora.cs.illinois.edu/download/attachments/28320883/singularity-sigops07.pdf https://agora.cs.illinois.edu/download/attachments/28320883/...
- reirob 14y agoThanks for this information. I am curious to see in which domain such Operating Systems will be used first. I am wondering actually why Google did not use such an OS architecture for Android (or Apple for their phones).