Java and C# both use garbage collection and typical Java and C# make heavy use of pointers, indirection and many tiny heap allocations.