> but as time goes on, fragmentation results -- little bits of memory still get used even when a tab gets closed
Don't you still have the same problem with multiple processes, just moved to the kernel for them to deal with? It seems like if you kept everything in-process, you could use custom allocators and apply a sufficiently smart architecture so nothing stayed longer than necessary.