In short, a process will never get GC-ed. You have to terminate it
yourself. My MuSwiki server had a funny bug regarding this, because
ConnectionQueue's will keep accepting connections even if you think
they have become garbage! I ended up with three CQ's instead of one,
and they actually accepted connection in *exactly* a round-robin
fashion! The observable was that exactly every third connection to the
server worked fine, while the others connected but then hung.
IMHO, try to avoid processes whenever you can. Usually you can find a
single-threaded version that has just one point of ugliness: the point
where you have to dispatch between the "threads". The multi-threaded
version usually turns out to have even more ugliness, in the form of
synchronization. Plus, the multi-threaded version is usually more
difficult to debug and to test.