I am wondering what the differences are or if it is the same across both.
I suppose there is no conceptual difference. Since memory models are slighlty different(for example volative difference), realization may vary.
This question is not answerable.
Firstly, none of the relevant specifications will say anything about how Java or .net should implement garbage collection. So there is literally no "way that GC is done" in Java or in .net.
Secondly, the details of how GC is implemented differs between the various vendors for Java and .net respectively, and for any vendor the GC may change with each platform, each major version, minor version and even each patch version. On top of that, some implementations of Java allow you to choose between different garbage collectors using command line options.
Finally, it doesn't really matter how the GC is implemented in a Java or .net implementation provided that it can be made to work as required by the application. And for Java, the answer is that it can for most kinds of application. (The exceptions are typically systems/applications with hard real time requirements or very tight memory constraints.)
I found this link from my other question on SO that answers a little bit about the differences of garbage collection in Java and .NET/C#. For others who are looking for this kind of information, here it is-
In Java objects are created on the heap using the new keyword. Most classes in C# are created on the heap by using the new keyword. Also just as the JVM manages the destruction of objects so also does the CLR via a Mark and Compact garbage collection algorithm
NOTE: C# also supports stack-based classes, called value types, which are discussed further below.