See the question and my original answer on StackOverflow

The Cache is always using the machine's memory, the Session uses what has been configured:

In a web farm the Session can be local (which works only if affinity is set), or remote (state server or database, or custom), but the cache is always local.

So, storing a DataTable in the cache will consume memory, but it will not use serialization.

PS: storing a DataSet instead of a DataTable will change almost nothing.