Hi,
Here is a simple way to do garbage collection without pausing the program. A fork command is used to create a copy of the current process. Then the marking phase is done in the forked process. After that the list of marked objects is returned to the original process and the sweep phase is done. The forked process is then killed. This should enable zero-latency garbage collection when using mark-and-sweep alogrithm. The only downside is the increased memory consumption because of the need to fork the process. In the worst case the memory requirement is doubled. However, since modern unixes do fork very efficently the need of extra memory is in most cases well below 100%. Has Sun considered this algorithm or something similiar?